作者suny999 ()
看板Cad_Cae
标题Re: [问题] 请问曲线聚合线如何取不同的长度
时间Mon Nov 22 00:18:58 2010
这个程式很久以前贴过,只是连m都没有...好像没什麽路用 T_T
抱歉OP了...但
我要替它澄清一下和Measure的差异。
不等距切分在道路、桥梁设计时,就会发现它的功用。
这个小程式可以在1分钟内谈笑间切完40几段非等长度线段,
但如果用 Measure + erase + break 等等~~~
则需要10分钟(如果没弄错或乱掉达到神的领域的话)。
把下面的程式贴到Autocad command後即载入完成
功能:在聚合线上画出指定长度的标注线
指令: meas
hint:3@200=(200,200,200):3@200
hint:3@200=(200,200,200): (← 按Enter完成连续输入)
Offset distance:0 (← 标注线偏移量)
Extend length:100 (← 标注线长度)
===============================================================
(vl-load-com)
(defun c:meas()
(defun ms:GetList(/ ls tmp tmpls @)
(setq ls '())
(while (/= "" (setq tmp (getstring "hint:3@200=(200,200,200):")))
(setq tmpls '() ls
(append ls
(if (setq @ (vl-string-search "@" tmp))
(repeat(atoi tmp)
(setq tmpls (append tmpls (list (substr tmp (+ 2 @))))))
(list tmp) ) ) ) );_ eo while
(mapcar 'ATOF ls)) ;_eo GetList
(defun ms:CumulativeList(oList / ls add nList)
(setq ls 0.0 nList '())
(foreach add oList(setq ls(+ ls add)nList(append nList(list ls)))))
(setq MSpace(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object)))
SegList (ms:GetList)
CumList (ms:CumulativeList SegList)
Offset (getreal "Offset distance:")
Extend (getreal "Extend length:")
Curve-obj(vlax-ename->vla-object(car(entsel)))
n 0)
(foreach Loc CumList
(setq
Prm (vlax-curve-getParamAtDist curve-obj Loc)
Pt1 (vlax-curve-getPointAtParam curve-obj Prm)
Dri (vlax-curve-getFirstDeriv curve-obj Prm)
Ang (+ (* pi 0.5) (angle '(0 0 0) Dri))
Pt2 (polar Pt1 Ang Offset)
Pt1 (polar Pt2 Ang Extend)
Str (strcat " Sec."(itoa n)", Len="(rtos(nth n SegList))", Loc="(rtos Loc))
Obj (vla-AddLine MSpace (vlax-3d-point Pt2) (vlax-3d-point Pt1))
Obj (vla-AddText MSpace Str (vlax-3d-point Pt2) (getvar "textsize"))
n (1+ n) )
(vla-put-Rotation Obj (+ Ang pi)) ));_eo meas
========================================================
其实这个程式是我刚学lisp第一个正经的小程式,
当时有贴在版上分享,现在原汁原味再OP一次。
这个程式目前只有我公司部门内部使用,
也陆续补充一些功能:
1. 像 measure 支援图块正交或非正交插入
2. 智慧判断使用者选取位置决定选取曲线起始点并用暂时记号提示使用者
3. 支援聚合线、云形线、弧、直线、3D聚合线等
有兴趣的人可以当作练习题,就这样。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 115.43.126.69
1F:推 Js1233:不错,感谢分享 11/22 08:58
2F:推 sjgau:推,+1 11/22 10:47
3F:推 ftc693:推 999大大越来越厉害了 我最近也买书开始学了 12/04 23:46
4F:→ ftc693:最近想要把图块插入 聚合线的转折点上 但是还写不出来 12/04 23:48