lisp裡面點表的格式是怎樣的,比如說多段線返回的點表

時間 2021-06-11 15:19:55

1樓:朱正偉

點表的樣式可以在cad命令列檢視,autolisp**如下:

;命令tes;計算多段線節點座標並加入表在命令列顯示

(defun c:tes ( / ent i p1 ss1)

(setvar "cmdecho" 0)

(setvar "blipmode" 0)

(if (null vlax-dump-object) (vl-load-com) );載入vlax函式

(if (and (setq ent (entsel "\n請選擇多段線"))

(setq ent (car ent));提取lisp物件

(= (cdr (assoc 0 (entget ent))) "lwpolyline");確認是多段線

)(progn

(setq i (vlax-curve-getendparam ent));計算節點數量

(if (vlax-curve-isclosed ent) (setq i (- i 1)) );如果物件封閉節點數量減少1

(setq ss1 '());建立空表

(while (> i -1);迴圈計算

(setq p1 (vlax-curve-getpointatparam ent i));計算節點3d點

(setq ss1 (cons p1 ss1));點加人表

(setq i (- i 1));上一個節點

);while;迴圈結束

(princ ss1);命令列顯示座標表))

(princ);程式結束)

2樓:

((x1 y1)(x2 y2))一般是這種,看你怎麼提取了。

lisp 如何獲取圖元中所有點資訊並列表

3樓:

用等分函式線的函式,然後儲存座標到一個表就行了。

4樓:

(entget (ssname (ssget ) 0))(ssget ) 取得一個選擇集

(ssname (ssget ) 0)根據索引值取出選擇集中的物件名稱

(entget (ssname (ssget ) 0))取出物件名稱的資訊列表

如何用lisp寫一個。點選中多段線後,用指定大小的圓來像其填充滿?

5樓:朱正偉

如果手動繪製的話,應當怎樣繪製?應該提供方法。

只有手動可以做到,程式就可以做到。

auto lisp 中求一段多段線的座標儲存在一個表中,然後在每個點上畫圓。求改函式

6樓:匿名使用者

你的程式第三行中(entget(pline_name))是錯誤的,pline_name不應該有括號。

程式編寫過於複雜,簡化程式如下:

(defun c:pwline (/ pline_name pline_content c)

(setq pline_name (car (entsel "請選擇需要標註的多段線:"))

pline_content (entget pline_name)

c (assoc 10 pline_content)

)(while c

(command "circle" (cdr c) 10)

(setq pline_content (cdr (member c pline_content))

c (assoc 10 pline_content))))

需要一個在多段線上加點的lisp 謝謝

7樓:濯紹祺

;;;用ap命令載入後,輸入命令gm,先選中心線,再選任意點即可

(defun c:gm (/ cur pt olderr olderror *error*)

;;自定義錯誤處理函式

(defun myerror (s)

(if (and (/= s "函式被取消")

(/= s "函式已取消")

(/= s "function cancelled")

(/= s "quit / exit abort")

)(princ (strcat "錯誤:" s))

)(setq *error* olderror)

(command "undo" "end")

(setvar "cmdecho" 1)

(princ)

);;系統變數設定

(setvar "cmdecho" 0)

(setq olderror *error*

*error* myerror

)(while (not cur)

(princ "\n請選擇曲線:")

(setq cur (car (entsel)))

(if cur (setq cur (vlax-ename->vla-object cur)))

)(setq pt (getpoint))

(if(not pt) (exit))

(setq pt (vlax-curve-getclosestpointto cur pt))

(princ "\n樁號 = ")

(princ (vlax-curve-getdistatpoint cur pt))

;;還原系統變數

(setq *error* olderror)

(setvar "cmdecho" 1)

(princ))