我想学习用CAD画抛物线

mzq 发表于 2009-12-23 21:59:20 | 显示全部楼层 | 阅读模式
我想学习用CAD画抛物线。谢了!
精彩评论倒序浏览

3945查看5评论

lb99007-00... 发表于 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 tmpts  myobjh 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 n  2)                                ;;抛物线指数
;(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 输入抛物线指数[2]: "))
  (if (= n nil)
    (setq n 2)
  )
(setq dx (getreal "\n 输入抛物线精度[0.5]: "))
  (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
这个常青藤就可以实现的,画桥梁的应该很多都用常青藤的吧!
举报 回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

 
 
  • QQ:56984982
  • 点击这里给我发消息
    电话:13527553862
    站务咨询群桥头堡站务咨询桥梁专业交流群:
    中国桥梁专业领袖群
    工作时间
    8:00-18:00