[討論]請問為什麼LISP有時候可執行,有時候不行
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]請問為什麼LISP有時候可執行,有時候不行
請問大家
有沒有寫了一個LISP,在測試的時候作動正常
但實際再圖面運作的時候,卻會出現問題
我發生的情況如下
我為了繪圖方便,我參考網路上的作品
自己寫了一個小LISP,因為公司有PIP的問題,不知道能不能弄出來,如果可以明天會補上
大致功能為,選擇一條聚合線(其實本來想用畫的,再用entlast取出,但無奈一直出錯)
然後在聚合線的線段坐標上插入圖塊,分起點,終點,中間的部分就判斷是轉90度,或45度插入對應的圖塊
再用副線連接圖塊和圖塊
目前有遇到幾個問題
有時候再選擇聚合線的時候,狀況列會出現 nil,我明明有選到
此時這條聚合線,複製到圖面上的其他地方,還是選不到,不停的出現 nil
但如果用描的再劃一次聚合線(完全一樣的聚合線),新劃的那一條,就可以用了 = =
或是再空白處很正常,但在非空白處,就會出現執行到一半的現象
可能有3個彎頭圖塊,只插入了1個,就中斷了
目前以上為最大的2個問題,畢竟我每天中午少半小時睡覺,寫了快一個月,如果後來不能用,我應該會噢死
目前尚未解決的小問題有,劃45度的時候,彎頭和彎頭之間不知道怎麼用副線銜接
終點的時候,副線線段會有過短的問題
另外因為我是參考網路上的文件自學的lisp,說真的真的寫的非常的傷眼
我為了判斷線段是往上下左右,用了超級多的if,大概有40個吧......弄到後來自己很痛苦
以上如果各位前輩,有空的時候,請幫忙解答一下,小弟感激不盡
LSP如下
如果有需要請自取,但寫的不怎樣就是了
有沒有寫了一個LISP,在測試的時候作動正常
但實際再圖面運作的時候,卻會出現問題
我發生的情況如下
我為了繪圖方便,我參考網路上的作品
自己寫了一個小LISP,因為公司有PIP的問題,不知道能不能弄出來,如果可以明天會補上
大致功能為,選擇一條聚合線(其實本來想用畫的,再用entlast取出,但無奈一直出錯)
然後在聚合線的線段坐標上插入圖塊,分起點,終點,中間的部分就判斷是轉90度,或45度插入對應的圖塊
再用副線連接圖塊和圖塊
目前有遇到幾個問題
有時候再選擇聚合線的時候,狀況列會出現 nil,我明明有選到
此時這條聚合線,複製到圖面上的其他地方,還是選不到,不停的出現 nil
但如果用描的再劃一次聚合線(完全一樣的聚合線),新劃的那一條,就可以用了 = =
或是再空白處很正常,但在非空白處,就會出現執行到一半的現象
可能有3個彎頭圖塊,只插入了1個,就中斷了
目前以上為最大的2個問題,畢竟我每天中午少半小時睡覺,寫了快一個月,如果後來不能用,我應該會噢死
目前尚未解決的小問題有,劃45度的時候,彎頭和彎頭之間不知道怎麼用副線銜接
終點的時候,副線線段會有過短的問題
另外因為我是參考網路上的文件自學的lisp,說真的真的寫的非常的傷眼
我為了判斷線段是往上下左右,用了超級多的if,大概有40個吧......弄到後來自己很痛苦
以上如果各位前輩,有空的時候,請幫忙解答一下,小弟感激不盡
LSP如下
如果有需要請自取,但寫的不怎樣就是了
- 代碼:
[code]
;快速EXH ae hendry ;
(defun c:AE(/ pmodec par1 sss SS1 typ1L IF1 typ1 typ2 pl pldate plone nr PTXY1 PTXY2 pt_x1 pt_x2 pt_y1 pt_y2 pt_xL pt_xLo PTXYLO PTXY)
(setq pmodec (getvar "osmode"))
(setvar "osmode" 0)
(setq par1 (getvar "CMDECHO"))
(setvar "CMDECHO" 0)
; (command "ORTHO" "ON") ;正交 on 打開,off 關閉
(command "INSERT""EXH-LISP""0,0""""""")
(command "ERASE" "L" "")
(IF (= SS2 nil)(setq SS2 0))
(setq SS1 (getint(strcat "輸入EXH尺寸(單位cm):<"(itoa SS2)">"))) ;要求1實數
;(prompt (strcat "<"(itoa SS2)">"))
(if(= SS1 nil)
(setq SS1 SS2)
)
(setq SS2 SS1)
(setq typ1L SS1) ;縮減長度
(setq IF1 0)
;-----------起點種類---------------;
(setq typ1 (getint "\n選擇起點種類(預設順T) : (1)順T (2)90上 (3)90下 (4)盲板 :"));輸入實數
(if (= typ1 nil)(setq typ1 1))
(if (AND(/= typ1 1)(/= typ1 2)(/= typ1 3)(/= typ1 4))(setq typ1 1))
(if (= typ1 1)
(progn
(setq typ1 "EX-順TLISP")
(setq typ1L(* typ1L 0.75))
))
(if (= typ1 2)
(progn
(setq typ1 "EX-90ULISP")
))
(if (= typ1 3)
(progn
(setq typ1 "EX-90DLISP")
))
(if (= typ1 4)
(progn
(setq typ1 "EX-FLGLISP")
(setq typ1L 0)
))
;-------------------------------------;
;--------------起點種類---------------;
(setq typ2 (getint "\n選擇終種類(預設90上) : (1)90上 (2)90下 :"));輸入實數
(if (= typ2 nil)(setq typ2 1))
(if (AND(/= typ2 1)(/= typ2 2))(setq typ2 1))
(if (= typ2 1)
(progn
(setq typ2 "EX-90ULISP")
))
(if (= typ2 2)
(progn
(setq typ2 "EX-90DLISP")
))
;--------------------------;
(setq pl (car (entsel "\n請選取聚合線 : ")));取聚合線圖元名稱 <圖元名稱: 7efaba18>
;(setq Pl(entlast));最後畫的一個圖元
(setq pldate(entget pl)) ;聚合線資料串列
(setq plone(car pldate)) ;聚合線第一個元素 (-1 . <圖元名稱: 7100ca38>)
(setq PTXY1 (cdr(assoc 10 pldate))) ;第1個點座標
(setq PTXY2 (cdr(nth 18 pldate))) ;第2個點座標
(setq pt_x1 (car PTXY1)) ;第1個點座標 car 求x座標
(setq pt_y1 (cadr PTXY1)) ;第1個點座標cadr 求y座標
(setq pt_x2 (car PTXY2)) ;第2個點座標 car 求x座標
(setq pt_y2 (cadr PTXY2)) ;第2個點座標cadr 求y座標
(if(and
(> pt_x2 pt_x1)
(= pt_y2 pt_y1)
)
(progn
(setq pt_xL (+ pt_x1 typ1L))
(setq pt_xLo (- pt_x2 SS1))
(setq PTXYL (LIST pt_xL pt_y1))
(setq PTXYLO (LIST pt_xLO pt_y2))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT"typ1 PTXY1 SS1"""270") ;插入開始,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)));右
(if(and
(= pt_x2 pt_x1)
(> pt_y2 pt_y1)
)
(progn
(setq pt_YL (+ pt_y1 typ1L))
(setq pt_YLo (- pt_y2 SS1))
(setq PTXYL (LIST pt_x1 pt_yL))
(setq PTXYLO (LIST pt_x2 pt_YLO))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT"typ1 PTXY1 SS1"""") ;插入開始,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)));上
(if(and
(< pt_x2 pt_x1)
(= pt_y2 pt_y1)
)
(progn
(setq pt_xL (- pt_x1 typ1L))
(setq pt_xLo (+ pt_x2 SS1))
(setq PTXYL (LIST pt_xL pt_y1))
(setq PTXYLO (LIST pt_xLO pt_y2))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT"typ1 PTXY1 SS1"""90") ;插入開始,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)));左
(if(and
(= pt_x2 pt_x1)
(< pt_y2 pt_y1)
)
(progn
(setq pt_YL (- pt_y1 typ1L))
(setq pt_YLo (+ pt_y2 SS1))
(setq PTXYL (LIST pt_x1 pt_yL))
(setq PTXYLO (LIST pt_x2 pt_YLO))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT"typ1 PTXY1 SS1"""180") ;插入開始,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)));下
(
while plone
(setq nr (car plone))
(if (= nr 10)
(progn
(setq IF1(+ IF1 1))
(setq PTXY (cdr plone))
(setq pt_x (cadr plone)) ;x座標
(setq pt_y (caddr plone)) ;y座標
)
)
(if (> IF1 2)
(progn
;→↗→&→↘→ ;↗↑&↘↓
(IF(AND ;→↗
(= sss 1)
(> pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.292893219)))
(setq pt_yL (- pt_y (* SS1 0.292893219)))
(setq pt_xLo (+ pt_xold (* SS1 0.292893219)))
(setq pt_yLo (+ pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""180") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 180) ;180↗
))
(IF(AND ;↗→
(= sss 180)
(= pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.414213562)))
(setq pt_xLo (+ pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""0") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)
))
(IF(AND ;↗↑
(= sss 180)
(> pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (- pt_y (* SS1 0.414213562)))
(setq pt_yLo (+ pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""225") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)
))
(IF(AND ;→↘
(= sss 1)
(< pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.292893219)))
(setq pt_yL (+ pt_y (* SS1 0.292893219)))
(setq pt_xLo (+ pt_xold (* SS1 0.292893219)))
(setq pt_yLo (- pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""315") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 315);315↘
))
(IF(AND ;↘→
(= sss 315)
(= pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.414213562)))
(setq pt_xLo (+ pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""135") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)
))
(IF(AND ;↘↓
(= sss 315)
(< pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (+ pt_y (* SS1 0.414213562)))
(setq pt_yLo (- pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""270") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)
))
; ;
;←↖←&←↙← &↖↑&↙↓
(IF(AND ;←↙
(= sss 2)
(< pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.292893219)))
(setq pt_yL (+ pt_y (* SS1 0.292893219)))
(setq pt_xLo (- pt_xold (* SS1 0.292893219)))
(setq pt_yLo (- pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""0") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 0) ;↙0
))
(IF(AND ;↙←
(= sss 0)
(= pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.414213562)))
(setq pt_xLo (- pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""180") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)
))
(IF(AND ;↙↓
(= sss 0)
(< pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (+ pt_y (* SS1 0.414213562)))
(setq pt_yLo (- pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""45") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)
))
(IF(AND ;←↖
(= sss 2)
(> pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.292893219)))
(setq pt_yL (- pt_y (* SS1 0.292893219)))
(setq pt_xLo (- pt_xold (* SS1 0.292893219)))
(setq pt_yLo (+ pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""135") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 135); ↖
))
(IF(AND ;↖←
(= sss 135)
(= pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.414213562)))
(setq pt_xLo (- pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""315") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)
))
(IF(AND ;↖↑
(= sss 135)
(> pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (- pt_y (* SS1 0.414213562)))
(setq pt_yLo (+ pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""90") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)
))
; ;
;↑↗↑&↑↖↑;
(IF(AND ;↑↗
(= sss 3)
(> pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.292893219)))
(setq pt_yL (- pt_y (* SS1 0.292893219)))
(setq pt_xLo (+ pt_xold (* SS1 0.292893219)))
(setq pt_yLo (+ pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""45") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 45) ;↗
))
(IF(AND ;↗↑
(= sss 45)
(> pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (- pt_y (* SS1 0.414213562)))
(setq pt_yLo (+ pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""225") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)
))
(IF(AND ;↗→
(= sss 45)
(= pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.414213562)))
(setq pt_xLo (+ pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""0") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)
))
(IF(AND ;↑↖
(= sss 3)
(> pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.292893219)))
(setq pt_yL (- pt_y (* SS1 0.292893219)))
(setq pt_xLo (- pt_xold (* SS1 0.292893219)))
(setq pt_yLo (+ pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""270") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 270) ;↖
))
(IF(AND ;↖↑
(= sss 270)
(> pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (- pt_y (* SS1 0.414213562)))
(setq pt_yLo (+ pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""90") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)
))
(IF(AND ;↖←
(= sss 270)
(= pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.414213562)))
(setq pt_xLo (- pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""315") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)
))
; ;
;↓↙↓&↓↘↓;
(IF(AND ;↓↙
(= sss 4)
(< pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.292893219)))
(setq pt_yL (+ pt_y (* SS1 0.292893219)))
(setq pt_xLo (- pt_xold (* SS1 0.292893219)))
(setq pt_yLo (- pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""225") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 225) ;↙
))
(IF(AND ;↙↓
(= sss 225)
(< pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (+ pt_y (* SS1 0.414213562)))
(setq pt_yLo (- pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""45") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)
))
(IF(AND ;↙←
(= sss 225)
(= pt_y pt_yold)
(< pt_x pt_xold)
)
(progn
(setq pt_xL (+ pt_x (* SS1 0.414213562)))
(setq pt_xLo (- pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""180") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)
))
(IF(AND ;↓↘
(= sss 4)
(< pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.292893219)))
(setq pt_yL (+ pt_y (* SS1 0.292893219)))
(setq pt_xLo (+ pt_xold (* SS1 0.292893219)))
(setq pt_yLo (- pt_yold (* SS1 0.292893219)))
(setq PTXYL (LIST pt_xL pt_yL))
(setq PTXYLO (LIST pt_xLo pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""90") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 90); ↘
))
(IF(AND ;↘↓
(= sss 90)
(< pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (+ pt_y (* SS1 0.414213562)))
(setq pt_yLo (- pt_yold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""270") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)
))
(IF(AND ;↘→
(= sss 90)
(= pt_y pt_yold)
(> pt_x pt_xold)
)
(progn
(setq pt_xL (- pt_x (* SS1 0.414213562)))
(setq pt_xLo (+ pt_xold (* SS1 0.414213562)))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-45ELISP"PTXYold SS1"""135") ;插入45彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)
))
; ;
(IF(AND ;→↑
(= sss 1)
(> pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (- pt_y SS1))
(setq pt_yLo (+ pt_yold SS1))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""90") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)))
(IF(AND
(= sss 1) ;→↓
(< pt_y pt_yold)
(= pt_x pt_xold)
)
(progn
(setq pt_yL (+ pt_y SS1))
(setq pt_yLo (- pt_yold SS1))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""180") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)))
(IF(AND ;←↑
(> pt_y pt_yold)
(= pt_x pt_xold)
(= sss 2)
)
(progn
(setq pt_yL (- pt_y SS1))
(setq pt_yLo (+ pt_yold SS1))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""0") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 3)))
(IF(AND ;←↓
(< pt_y pt_yold)
(= pt_x pt_xold)
(= sss 2)
)
(progn
(setq pt_yL (+ pt_y SS1))
(setq pt_yLo (- pt_yold SS1))
(setq PTXYL (LIST pt_x pt_yL))
(setq PTXYLO (LIST pt_xold pt_yLo))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""270") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 4)))
(IF(AND ;↑→
(> pt_x pt_xold)
(= pt_y pt_yold)
(= sss 3)
)
(progn
(setq pt_xL (- pt_x SS1))
(setq pt_xLo (+ pt_xold SS1))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""270") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)))
(IF(AND ;↑←
(< pt_x pt_xold)
(= pt_y pt_yold)
(= sss 3)
)
(progn
(setq pt_xL (+ pt_x SS1))
(setq pt_xLo (- pt_xold SS1))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""180");插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2)))
(IF(AND ;↓→
(> pt_x pt_xold)
(= pt_y pt_yold)
(= sss 4)
)
(progn
(setq pt_xL (- pt_x SS1))
(setq pt_xLo (+ pt_xold SS1))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""0") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 1)))
(IF(AND ;↓←
(< pt_x pt_xold)
(= pt_y pt_yold)
(= sss 4)
)
(progn
(setq pt_xL (+ pt_x SS1))
(setq pt_xLo (- pt_xold SS1))
(setq PTXYL (LIST pt_xL pt_y))
(setq PTXYLO (LIST pt_xLO pt_yold))
(command"MLINE""J""z""s"SS1 PTXYLO PTXYL"")
(command "INSERT""EXL-90ELISP"PTXYold SS1"""90") ;插入彎頭,名稱,基準點,x比例,y比例,旋轉
(setq sss 2))))
);if判斷彎頭種類結束
(IF (= nr 210)
(progn
(if (= SSS 1);→
(command "INSERT"typ2 PTXY SS1"""90")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (= SSS 2);←
(command "INSERT"typ2 PTXY SS1"""270")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (= SSS 3);↑
(command "INSERT"typ2 PTXY SS1"""180")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (= SSS 4);↓
(command "INSERT"typ2 PTXY SS1"""")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (or(= SSS 180)(= SSS 45));↗
(command "INSERT"typ2 PTXY SS1"""135")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (or(= SSS 90)(= SSS 315));↘
(command "INSERT"typ2 PTXY SS1"""45")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (or(= SSS 0)(= SSS 225));↙
(command "INSERT"typ2 PTXY SS1"""315")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
(if (or(= SSS 135)(= SSS 270));↖
(command "INSERT"typ2 PTXY SS1"""225")) ;插入開始,名稱,基準點,x比例,y比例,旋轉
;←→↑↓↗↘↙↖
)
)
(setq pt_xold pt_x)
(setq pt_yold pt_y)
(setq PTXYold PTXY)
(setq pldate (cdr pldate)) ;去第一個資料後的資料串列
(setq plone(car pldate)) ;(0 . "LWPOLYLINE")
); while結束
(entdel pl)
(command"redraw")
(setvar "CMDECHO" par1)
(setvar "osmode" pmodec)
;(setq pmodec nil)
;(grdraw zero zero1 1 2); 畫出一條暫時的線,起點,終點,顏色 亮顯
(gc)
);結束
(prompt "*************** <<AE>> *****************")
(prin1)
[/code]
- 附件
hendry- 一般會員
- 文章總數 : 29
年齡 : 40
來自 : 台南
職業 : 建築相關
愛好 : 吃喝玩樂
個性 : 好學
使用年資 : 6
使用版本 : 2008
經驗值 : 4398
威望值 : 24
注冊日期 : 2013-04-24
回復: [討論]請問為什麼LISP有時候可執行,有時候不行
關於 [ 插入圖塊 ] 的 AutoLisp 程式,
一般都會以幻燈片影像檔的對話框,
點取圖塊, 插入圖檔來設計.
如果您對圖塊/幻燈片建立有概念,
可以參考阿貴寫的 IBSD_預覽幻燈片影像的插入圖塊程式 ,
來寫出您想要的插入圖塊的 AutoLisp 程式
一般都會以幻燈片影像檔的對話框,
點取圖塊, 插入圖檔來設計.
如果您對圖塊/幻燈片建立有概念,
可以參考阿貴寫的 IBSD_預覽幻燈片影像的插入圖塊程式 ,
來寫出您想要的插入圖塊的 AutoLisp 程式
yakuei88- 一般會員
- 文章總數 : 28
年齡 : 58
來自 : 高雄市
職業 : 雷射板金繪圖
愛好 : autolisp程式設計
個性 : 勤奮努力
使用年資 : 20年
使用版本 : 2012
經驗值 : 4124
威望值 : 39
注冊日期 : 2014-01-14
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章