Re: [問題] 請問曲線聚合線如何取不同的長度

看板Cad_Cae (電腦輔助設計)作者時間15年前 (2010/11/22 00:19), 編輯推噓3(301)
留言4則, 3人參與, 最新討論串3/3 (看更多)
這個程式很久以前貼過,只是連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
推,+1
11/22 10:47, 2F

12/04 23:46, , 3F
推 999大大越來越厲害了 我最近也買書開始學了
12/04 23:46, 3F

12/04 23:48, , 4F
最近想要把圖塊插入 聚合線的轉折點上 但是還寫不出來
12/04 23:48, 4F
文章代碼(AID): #1CwKPrUY (Cad_Cae)
文章代碼(AID): #1CwKPrUY (Cad_Cae)