几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(AutoLISP)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-27, 01:03 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 请版主老顾修改一个程序

请版主老顾修改一个程序
www.dimcax.com
请版主老顾修改一个程序
我下载了一个沿三维线段拉伸圆的 lisp 小程序,可在autocad2004中使用,能否修改成可拉伸任何形状实体?类似于auotcad2008中的扫略命令,有劳版主,谢谢。附源程序
(defun c:3dc ()
;(command "ucs" "o")
;(xload "ame")
(setq $$ss (ssget))
(setq radd (* 0.5 (getdist "\n请输入管子直径: ")))
(setq mmm 0)
(while (< mmm (sslength $$ss) )
(setq $ent (ssname $$ss mmm))
(if (= (dxf 0 (entget $ent)) "line")
(uline $ent radd)
(if (= (dxf 0 (entget $ent)) "arc")
(uarc $ent radd)
)
)
(setq mmm (+ 1 mmm))
)
)
(defun uline (uent rrr / )
(command "ucs" "w")
(command "ucs" "za" (dxf 10 (entget uent)) (dxf 11 (entget uent)) )
(command "circle" (list 0.0 0.0 0.0) rrr)
(setq $circ (entlast))
(command "ucs" "w")
(command "extrude" $circ "" (distance (dxf 10 (entget uent)) (dxf 11 (entget uent)) ) 0.0)
)
(defun uarc ($uent rrr / )
(command "ucs" "w")
(command "ucs" "e" $uent)
(command "ucs" "x" 90)
(setq ggg (dxf 40 (entget $uent)))
(command "circle" (list ggg 0.0 0.0) rrr)
(setq $circ (entlast))
(setq $ang2 (dxf 51 (entget $uent)))
(setq $ang1 (dxf 50 (entget $uent)))
(if (> $ang1 $ang2)(setq $ang2 (+ (* 2.0 pi) $ang2)))
(if (> $ang1 $ang2)(setq $z -1)(setq $z 1))
(setq $ang (* (/ 180.0 pi) (- $ang2 $ang1) ) )
(command "revolve" $circ "" (list 0 0 0)(list 0 $z 0) $ang)
(command "ucs" "w")
)
(defun dxf (code elist)
(cdr (assoc code elist))
);
(prompt "\n执行 3d 命令运行程序")

图片:

;我下载了一个沿三维线段拉伸圆的 lisp 小程序,可在autocad2004中使用,能否修改成可拉伸任何形状实体?
;类似于auotcad2008中的扫略命令,有劳版主,谢谢。附源程序
我改了一下,见下:
(defun c:3dc ()
(setq ss (ssget))
(setq radd (* 0.5 (getdist "\n请输入管子直径: ")))
(setq mmm 0)
(while (< mmm (sslength ss) )
(setq ent (ssname ss mmm) en (entget ent) bb (cdr (assoc 0 en)))
(if (= bb "line")
(progn
(setq p1 (cdr (assoc 10 en)) p2 (cdr (assoc 11 en)) )
(command "circle" p1 radd)
(setq ee (ssget "l"))
(command "rotate3d" ee ""p1 p2 "90" "rotate" ee ""p1 "90" )
(command "extrude" ee "" "p" ent)
)
(if (= bb "arc")
(progn
(setq p1 (cdr (assoc 10 en)) r (cdr (assoc 40 en)) an (cdr (assoc 50 en)) p2 (polar p1 an r) ang1 (* (- (* pi 0.5) an) (/ 180 pi)))
(command "circle" p2 radd)
(setq ee (ssget "l"))
(command "rotate3d" ee ""p1 p2 "90" "rotate" ee ""p1 ang1 )
(command "extrude" ee "" "p" ent)

)
(if (= bb "lwpolyline")
(progn
(setq p1 (nth 14 en) p1 (list (cadr p1) (caddr p1)) p2 (nth 18 en) p2 (list (cadr p2) (caddr p2)) )
(command "circle" p1 radd)
(setq ee (ssget "l"))
(command "rotate3d" ee ""p1 p2 "90" "rotate" ee ""p1 90 )
(command "extrude" ee "" "p" ent)
)
)))
(setq mmm (+ 1 mmm))
)
)
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 11:29 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多