- A+
所屬分類:cad
幾天前遇到了麻煩,需要在一條多線段上標(biāo)注某點(diǎn)距離起點(diǎn)距離,在網(wǎng)上查了半天,找到了方法(部分代碼來自網(wǎng)絡(luò),作者不詳),可以測量距離,但是不能標(biāo)注距離,之后進(jìn)行了一下修


標(biāo)注。現(xiàn)在分享給大家。
1.加載lsp命令為appload
也可以添加到啟動(dòng)組,這樣不用每次都需要加載,啟動(dòng)組—內(nèi)容—找到.lsp文件。2.命令為zhbz,選擇多線段(不能為封閉線段)—點(diǎn)擊需要測量的位置—點(diǎn)擊標(biāo)注距離文字的位置,(注意,自己判斷起點(diǎn)\終點(diǎn),頭尾可不一定哦,當(dāng)然,你自己畫的線就沒問題了。)將以下代碼復(fù)制到記事本,以【.lsp】為后綴命名,存儲(chǔ)以ANSI編碼形式,打開cad,【appload】加載,命令【zhbz】就可以查詢并標(biāo)注。
(defun C:zhbz ( / &dis1 &k1 &n1 &p1 &ss1)
(if (null vlax-dump-object) (vl-load-com) )
(setq &ss1 '("LINE" "LWPOLYLINE" "CIRCLE" "ARC" "HELIX" "ELLIPSE" "SPLINE" "POLYLINE"))
;曲線有起點(diǎn):直線,多段線,圓,圓弧,螺旋對象,橢圓,樣條曲線,二維多段線
(if (and
(setq &k1 (entsel "\n請選擇曲線"))
(setq &k1 (car &k1))
(member (cdr (assoc 0 (entget &k1))) &ss1);確認(rèn)是曲線
(setq &p1 (getpoint "\n請選擇指定點(diǎn)"))
(setq &p1 (vlax-curve-getclosestpointto &k1 &p1));取得最近點(diǎn)
(setq &n1 (vlax-curve-getParamAtPoint &k1 &p1));取得參數(shù)
(setq &dis1 (vlax-curve-getDistAtParam &k1 &n1));到起點(diǎn)距離
(setq b (rtos &dis1 2 2)) ;將數(shù)據(jù)結(jié)果由實(shí)數(shù)轉(zhuǎn)換成字符串,且設(shè)置為兩個(gè)精度,即小數(shù)點(diǎn)后兩位
(setq a (getpoint "\n屏幕單擊插入點(diǎn)")) ;指定插入點(diǎn)
(entmake (list '(0 . "text") ;建立文字圖元屬性列表,文字,插入點(diǎn),內(nèi)容,字高
(cons 10 a)
(cons 11 a)
(cons 1 b)
'(40 . 15);字高
)
)
)
(princ (strcat "\n指定點(diǎn)到起點(diǎn)距離為" (rtos &dis1)));命令行顯示
)
(princ)
);復(fù)制到記事本,以【.lsp】為后綴命名,存儲(chǔ)以ANSI編碼形式,打開cad,【appload】加載,命令【zhbz】就可以查詢并標(biāo)注,by xkbuild,更多搜索 xkbuild
贊
0
賞

