Re: [問題] 請問曲線聚合線如何取不同的長度
這個程式很久以前貼過,只是連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
推
11/22 08:58, , 1F
11/22 08:58, 1F
推
11/22 10:47, , 2F
11/22 10:47, 2F
推
12/04 23:46, , 3F
12/04 23:46, 3F
→
12/04 23:48, , 4F
12/04 23:48, 4F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
Cad_Cae 近期熱門文章
PTT數位生活區 即時熱門文章
-10
17