mzq 发表于 2009-12-23 21:59:20

我想学习用CAD画抛物线

我想学习用CAD画抛物线。谢了!

lb99007-007 发表于 2011-10-25 09:39:06

有易桥,里面有画曲线的,一元二次方程解除常量,然后直接画

flywangyu 发表于 2011-7-23 08:32:47

怎么没有发言的呢?有的用excel,但是好像可以用编程比较方便,我想请问有没有用编程的,虚心请教一下,谢谢。

xxfvssj 发表于 2011-7-25 11:43:23

去网上下一软件专门是cad辅助的插件我之前有 不过现在没有了

wkur 发表于 2011-10-31 17:08:57

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;20090611-wk

(defun C:PWX(/ mSpace insPt H1 H2 S1 S2 L n dx dy x yh ys ah as ch cs x0 y0 ptx pty ptlsth ptlsts tmpth tmptsmyobjh myobjs os)
(vl-load-com)
(setq AcadObject(vlax-get-acad-object)
      AcadDocument(vla-get-ActiveDocument AcadObject)
      mSpace(vla-get-ModelSpace AcadDocument)
)

(setq os (getvar "osmode"))                         ;;获取对象捕捉
(setvar "osmode" 0)                                ;;关闭对象捕捉
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;(setq H1 2.5)                                ;;跨中梁高
;(setq H2 6.5)                                ;;墩顶梁高
;(setq L 62.5)                                ;;箱梁变高段长度
;(setq S1 0.25)                                ;;跨中底板厚
;(setq S2 1.00)                                ;;墩顶底板厚
;(setq n2)                                ;;抛物线指数
;(setq dx 0.5)                                ;;抛物线精度
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(setq H1 (getreal "\n 输入跨中梁高: "))
(setq H2 (getreal "\n 输入墩顶梁高: "))
(setq L(getreal "\n 输入箱梁变高段长度: "))
(setq S1 (getreal "\n 输入跨中底板厚: "))
(setq S2 (getreal "\n 输入墩顶底板厚: "))

(setq n (getreal "\n 输入抛物线指数: "))
(if (= n nil)
    (setq n 2)
)
(setq dx (getreal "\n 输入抛物线精度: "))
(if (= dx nil)
    (setq dx 0.5)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(setvar "osmode" os) ;;还原对象捕捉
(setq insPt (getpoint"\n梁底抛物线顶点"))
(setq x0 (car insPt))
(setq y0 (cadr insPt))
(setq y0 (+ y0 H1))


(setq ah (/ (- H2 H1) (expt L n)))                        ;;梁抛物线参数ah
(setq ch H1)                                                ;;梁高抛物线参数ch
(setq as (/ (- S2 S1) (expt L n)))                        ;;梁抛物线参数ah
(setq cs S1)                                                ;;梁高抛物线参数ch

(setq x 0)
(while (<= x L)                                                                        ;;循环开始
(setq yh (+ (* ah (expt x n)) ch))                                                ;;各节点梁高
(setq ptx(+ x0 x))
(setq pty(- y0 yh))
(setq ptlsth (append ptlsth (list ptx pty)))        ;;加入各点梁高

(setq ys (+ (* as (expt x n)) cs))                                                ;;各节点底板厚
(setq pty(+ pty ys))
(setq ptlsts (append ptlsts (list ptx pty)))        ;;加入各点底板厚

(setq x (+ x dx))                                ;;循环
)
;最后一点分段不尽时处理
(while (< (- x dx) L)                                ;;循环开始
(setq yh (+ (* ah (expt L n)) ch))                ;;各节点梁高
(setq ptx(+ x0 L))
(setq pty(- y0 yh))
(setq ptlsth (append ptlsth (list ptx pty)))        ;;加入各点梁高

(setq ys (+ (* as (expt L n)) cs))                ;;各节点底板厚
(setq pty(+ pty ys))
(setq ptlsts (append ptlsts (list ptx pty)))        ;;加入各点底板厚

(setq x (+ x dx))                                ;;循环
)


(setq tmpth (vlax-make-safearray vlax-vbDouble (cons 0 (- (length ptlsth) 1))))
(vlax-safearray-fill tmpth ptlsth)
(setq myobjh (vla-AddLightWeightPolyline mSpace tmpth))

(setq tmpts (vlax-make-safearray vlax-vbDouble (cons 0 (- (length ptlsts) 1))))
(vlax-safearray-fill tmpts ptlsts)
(setq myobjs (vla-AddLightWeightPolyline mSpace tmpts))

(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

wj768182 发表于 2012-1-30 16:15:21

这个常青藤就可以实现的,画桥梁的应该很多都用常青藤的吧!
页: [1]
查看完整版本: 我想学习用CAD画抛物线