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


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


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-28, 02:52 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 求一个能把样条曲线和多段线相互转化的lisp源程序

求一个能把样条曲线和多段线相互转化的lisp源程序
www.dimcax.com
求一个能把样条曲线和多段线相互转化的lisp源程序
如题。谢谢各位!!!

用wnfout的方法来写
勤能补拙

用wnfout的方法来写

不能明白啊

(defun c:sp2arc (/ ename ent i
j old_clayer old_cmdecho old_dimzin
old_osmode ss old_cecolor
)
;;funcation sparc
(defun sparc (ename / a arcss b i idlst j k len new p1 p2 p3 per
vlaobj)
(vl-load-com)
(command "area" "o" ename)
(if (< (setq per (getvar "perimeter")) 1.0)
(setq a (/ per 10))
(if (>= per 500)
(setq a (/ per 2000))
(setq a (/ per (+ (* (fix (/ (/ per 0.25) 4)) 4) 2)))
)
)
(setq idlst nil
i 0
b 0
vlaobj (vlax-ename->vla-object ename)
)
(while (< b per)
(setq b (* a i)
i (1+ i)
idlst (append idlst (list (vlax-curve-getpointatdist vlaobj b)))
)
)
(entdel (vlax-vla-object->ename vlaobj))
(setq i 0
j 1
k 2
len (length idlst)
arcss (ssadd)
)
(while (<= k len)
(setq p1 (nth i idlst)
p2 (nth j idlst)
p3 (nth k idlst)
)
(setq i (+ i 2)
j (+ j 2)
k (+ k 2)
)
(command "arc" p1 p2 p3)
(setq new (entlast))
(setq arcss (ssadd new arcss))
)
(command "pedit" new "y" "j" arcss "" "")
)
;;funcation get_color
(defun get_color (ename / ent col)
(setq ent (entget ename))
(or
(setq col (cdr (assoc 62 ent)))
(setq
col (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 ent)))))
)
)
(rtos col 2 0)
)
;;main
(setq old_cmdecho (getvar "cmdecho")
old_osmode (getvar "osmode")
old_clayer (getvar "clayer")
old_dimzin (getvar "dimzin")
old_cecolor (getvar "cecolor")
)
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "dimzin" 0)
(setq ss (ssget)
i 0
j 0
)
(repeat (sslength ss)
(setq ename (ssname ss i))
(setq ent (entget ename))
(if (= (cdr (assoc 0 ent)) "spline")
(progn
(setvar "clayer" (cdr (assoc 8 ent)))
(setvar "cecolor" (get_color ename))
(sparc ename)
(setq j (1+ j))
)
)
(setq i (1+ i))
)
(alert (strcat "\n共 " (rtos j 2 0) " 条spline转换成arc"))
(setvar "cmdecho" old_cmdecho)
(setvar "osmode" old_osmode)
(setvar "clayer" old_clayer)
(setvar "dimzin" old_dimzin)
(setvar "cecolor" old_cecolor)
(princ)
)

多段线有一个属性就是变成样条曲线
拟合

用cad的et扩展工具箱有个命令可以解决

样条曲线转多段线程序:
明经cad社区 → 工程篇 → 机械工程 → [原创]任意曲线转换成多段线程序

前面那么仁兄写的程序,我试了一下不能转啊
勤能补拙

:
(defun c:sp2arc (/ ename ent i
j old_clayer old_cmdecho old_dimzin
old_osmode ss old_cecolor
)
;;funcation sparc
.......
这个有点问题,弧形部分可以,直线部分好行不行,希望大师改一下
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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



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


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