[討論]圖層轉線型後換圖層改顏色
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]圖層轉線型後換圖層改顏色
請問各位大大從CREO轉CAD圖層
如CREO轉到cad圖層為1.UP 2.DOWN 3.0 4.AXIS
其中要先由圖層改線型 圖層 1.UP 線型要改為 UP_LINE(自定義的) 後圖層自動轉換為BLOCK 顏色變為黃色
圖層 2.DOWN 線型要改為 DOWN_LINE(自定義的) 後圖層自動轉換為BLOCK 顏色變為13
圖層 3.0 線型要改為 BYLAER 後圖層不變 顏色為BYLAER
圖層 4.AXIS 線型要改為 BYLAER 後圖層自動轉換為bend 顏色為BYLAER
小弟完全不會LISP 故爬文了許久找到以下比較接近的lisp
參考自 https://blog.xuite.net/yakuei88/twblog/129509936-%E8%AE%8A%E6%9B%B4%E5%9C%96%E5%B1%A4
變更圖層lisp
(defun C:CL()
; 2005.04.23 YA-KUEI 2005.12.09 REV01
; 程式功能 : 變更圖層
; WHITE -> 1
; YELLOW -> 2
; CYAN -> 0
; RED -> 3
(setvar "cmdecho" 0)
(command ".-layer" "N" "0,1,2,3" "c" "CYAN" "0" "c" "WHITE" "1" "c" "YELLOW" "2" "c" "RED" "3" "")
(setvar "CLAYER" "0")
(setq a (ssget "X" '((8 . "WHITE"))))
(if a
(command "change" a "" "p" "La" "1" "") ;直接把"CHANGE"這個指令的順序寫成LISP語法就成了
)
(setq a (ssget "X" '((8 . "YELLOW"))))
(if a
(command "change" a "" "p" "La" "2" "")
)
(setq a (ssget "X" '((8 . "CYAN"))))
(if a
(command "change" a "" "p" "La" "0" "")
)
(setq a (ssget "X" '((8 . "RED"))))
(if a
(command "change" a "" "p" "La" "3" "")
)
(command ".-purge" "A" "*" "N")
(princ)
)
第二個是在討論區找到的資料
(defun c:CD ()
(setvar "CmdEcho" 0)
(CClay "DIM標註" 3 "DIMENSION") ;; 這句表示:將DIMENSION標注 物件歸類到 3 綠色 ,圖層 DIM
(CClay "Text" 1 "Text");; 這句表示:將 Text單行文字 物件歸類到 1 紅色 , 圖層 Text
(CClay "MText" 1 "Mtext");; 這句表示:將 MText多行文字 物件歸類到 1 紅色 , 圖層 MText
(CClay "Dim標註" 3 "Leader");; 這句表示:將 Leader引線 物件歸類到 3 綠色 , 圖層 Dim
(CClay "Hatch填充線" 55 "Hatch");; 這句表示:將 Hatch填充線 物件歸類到 55 褐色 , 圖層 Hatch填充線
(setvar "CmdEcho" 1)
(prompt "\n 自動歸類圖層已完成,請看圖層。")
(princ)
)
;;************CClay (使用者勿修改副程式)******************
(defun CClay (layname cc sObjTyp) ;;; layname 是圖層名稱,CC 是指訂圖層顏色,sObjtype 是物件類別(群碼索引值為 0)
(if (= nil (tblsearch "layer" layname))
(command "-layer" "n" layname "c" cc layname "")
)
(setq SS (ssget "x" (list (cons 0 sObjTyp) (cons 410 "Model"))))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(command "chprop" SS "" "la" layname "")
)
(princ)
)
;;----------------------------------------------------------------------;;
(vl-load-com)
(princ)
(princ "\n:: CD.lsp | 作者不明 ::")
(princ "\n:: 說明: 陳建余 2017-01-26 ::")
(princ "\n:: 代碼 \"CD 自動歸類圖層\" ::")
(princ)
;;----------------------------------------------------------------------;;
;; End of File ;;
;;----------------------------------------------------------------------;;
以上想把兩個合併~因為自己不會lisp只好卯起來亂寫~請大大們幫幫小弟感恩~附上以下我混和的lisp讓大大們見笑了
(defun c:CD ()
(setvar "CmdEcho" 0);關閉指令回應
(setvar "CLAYER" "0") ;設定當前圖層為0層
(CClay "block" 3 "UP"CONTINUOUS") ;;; 這句表示:將UP 物件歸類到 3 綠色 ,圖層 block ,線型 CONTINUOUS
(CClay "Text" 1 "Text"bylayer");; 這句表示:將 Text單行文字 物件歸類到 1 紅色 , 圖層 Text
(CClay "MText" 1 "Mtext"bylayer");; 這句表示:將 MText多行文字 物件歸類到 1 紅色 , 圖層 MText
(CClay "Dim標註" 3 "Leader"bylayer");; 這句表示:將 Leader引線 物件歸類到 3 綠色 , 圖層 Dim
(CClay "Hatch填充線" 55 "Hatch"bylayer");; 這句表示:將 Hatch填充線 物件歸類到 55 褐色 , 圖層 Hatch填充線
(CClay "temp" byLayer "insert"bylayer");; 這句表示:將插入圖塊歸類到 byLayer , 圖層 temp
(setvar "CmdEcho" 1) ;開啟指令回應
(prompt "\n 自動歸類圖層已完成。")
(princ)
)
;;************CClay (使用者勿修改副程式)******************
(defun CClay (layname cc sObjTyp litp) ;;;; layname 是圖層名稱,CC 是指訂圖層顏色,sObjtype 是物件類別(群碼索引值為 0),litp 是指訂線型
(if (= nil (tblsearch "layer" layname)) ; 判定圖層名稱是否存在
(if (= nil (tblsearch "LINETYPE" )) ; 判定線型是否存在
(command "-layer" "n" layname "c" cc layname ""l"litp layname "") ;;;; 執行-layer,建立圖層,建立顏色,建立線型
)
(setq SS (ssget "x" (list (cons 0 sObjTyp) (cons 410 "Model") (0. "*"))))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(command "chprop" SS "" "la" layname ""lt"layname "") ;變更變數(SS)物件性質的圖層名稱及線型名稱
)
(command ".-purge" "A" "*" "N") ; 清空未用圖層
(princ)
)
如CREO轉到cad圖層為1.UP 2.DOWN 3.0 4.AXIS
其中要先由圖層改線型 圖層 1.UP 線型要改為 UP_LINE(自定義的) 後圖層自動轉換為BLOCK 顏色變為黃色
圖層 2.DOWN 線型要改為 DOWN_LINE(自定義的) 後圖層自動轉換為BLOCK 顏色變為13
圖層 3.0 線型要改為 BYLAER 後圖層不變 顏色為BYLAER
圖層 4.AXIS 線型要改為 BYLAER 後圖層自動轉換為bend 顏色為BYLAER
小弟完全不會LISP 故爬文了許久找到以下比較接近的lisp
參考自 https://blog.xuite.net/yakuei88/twblog/129509936-%E8%AE%8A%E6%9B%B4%E5%9C%96%E5%B1%A4
變更圖層lisp
(defun C:CL()
; 2005.04.23 YA-KUEI 2005.12.09 REV01
; 程式功能 : 變更圖層
; WHITE -> 1
; YELLOW -> 2
; CYAN -> 0
; RED -> 3
(setvar "cmdecho" 0)
(command ".-layer" "N" "0,1,2,3" "c" "CYAN" "0" "c" "WHITE" "1" "c" "YELLOW" "2" "c" "RED" "3" "")
(setvar "CLAYER" "0")
(setq a (ssget "X" '((8 . "WHITE"))))
(if a
(command "change" a "" "p" "La" "1" "") ;直接把"CHANGE"這個指令的順序寫成LISP語法就成了
)
(setq a (ssget "X" '((8 . "YELLOW"))))
(if a
(command "change" a "" "p" "La" "2" "")
)
(setq a (ssget "X" '((8 . "CYAN"))))
(if a
(command "change" a "" "p" "La" "0" "")
)
(setq a (ssget "X" '((8 . "RED"))))
(if a
(command "change" a "" "p" "La" "3" "")
)
(command ".-purge" "A" "*" "N")
(princ)
)
第二個是在討論區找到的資料
(defun c:CD ()
(setvar "CmdEcho" 0)
(CClay "DIM標註" 3 "DIMENSION") ;; 這句表示:將DIMENSION標注 物件歸類到 3 綠色 ,圖層 DIM
(CClay "Text" 1 "Text");; 這句表示:將 Text單行文字 物件歸類到 1 紅色 , 圖層 Text
(CClay "MText" 1 "Mtext");; 這句表示:將 MText多行文字 物件歸類到 1 紅色 , 圖層 MText
(CClay "Dim標註" 3 "Leader");; 這句表示:將 Leader引線 物件歸類到 3 綠色 , 圖層 Dim
(CClay "Hatch填充線" 55 "Hatch");; 這句表示:將 Hatch填充線 物件歸類到 55 褐色 , 圖層 Hatch填充線
(setvar "CmdEcho" 1)
(prompt "\n 自動歸類圖層已完成,請看圖層。")
(princ)
)
;;************CClay (使用者勿修改副程式)******************
(defun CClay (layname cc sObjTyp) ;;; layname 是圖層名稱,CC 是指訂圖層顏色,sObjtype 是物件類別(群碼索引值為 0)
(if (= nil (tblsearch "layer" layname))
(command "-layer" "n" layname "c" cc layname "")
)
(setq SS (ssget "x" (list (cons 0 sObjTyp) (cons 410 "Model"))))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(command "chprop" SS "" "la" layname "")
)
(princ)
)
;;----------------------------------------------------------------------;;
(vl-load-com)
(princ)
(princ "\n:: CD.lsp | 作者不明 ::")
(princ "\n:: 說明: 陳建余 2017-01-26 ::")
(princ "\n:: 代碼 \"CD 自動歸類圖層\" ::")
(princ)
;;----------------------------------------------------------------------;;
;; End of File ;;
;;----------------------------------------------------------------------;;
以上想把兩個合併~因為自己不會lisp只好卯起來亂寫~請大大們幫幫小弟感恩~附上以下我混和的lisp讓大大們見笑了
(defun c:CD ()
(setvar "CmdEcho" 0);關閉指令回應
(setvar "CLAYER" "0") ;設定當前圖層為0層
(CClay "block" 3 "UP"CONTINUOUS") ;;; 這句表示:將UP 物件歸類到 3 綠色 ,圖層 block ,線型 CONTINUOUS
(CClay "Text" 1 "Text"bylayer");; 這句表示:將 Text單行文字 物件歸類到 1 紅色 , 圖層 Text
(CClay "MText" 1 "Mtext"bylayer");; 這句表示:將 MText多行文字 物件歸類到 1 紅色 , 圖層 MText
(CClay "Dim標註" 3 "Leader"bylayer");; 這句表示:將 Leader引線 物件歸類到 3 綠色 , 圖層 Dim
(CClay "Hatch填充線" 55 "Hatch"bylayer");; 這句表示:將 Hatch填充線 物件歸類到 55 褐色 , 圖層 Hatch填充線
(CClay "temp" byLayer "insert"bylayer");; 這句表示:將插入圖塊歸類到 byLayer , 圖層 temp
(setvar "CmdEcho" 1) ;開啟指令回應
(prompt "\n 自動歸類圖層已完成。")
(princ)
)
;;************CClay (使用者勿修改副程式)******************
(defun CClay (layname cc sObjTyp litp) ;;;; layname 是圖層名稱,CC 是指訂圖層顏色,sObjtype 是物件類別(群碼索引值為 0),litp 是指訂線型
(if (= nil (tblsearch "layer" layname)) ; 判定圖層名稱是否存在
(if (= nil (tblsearch "LINETYPE" )) ; 判定線型是否存在
(command "-layer" "n" layname "c" cc layname ""l"litp layname "") ;;;; 執行-layer,建立圖層,建立顏色,建立線型
)
(setq SS (ssget "x" (list (cons 0 sObjTyp) (cons 410 "Model") (0. "*"))))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(command "chprop" SS "" "la" layname ""lt"layname "") ;變更變數(SS)物件性質的圖層名稱及線型名稱
)
(command ".-purge" "A" "*" "N") ; 清空未用圖層
(princ)
)
wuwubaibai- 一般會員
- 文章總數 : 70
年齡 : 42
來自 : 彰化市
職業 : 板金
愛好 : 電腦
個性 : 外向
使用年資 : 4
使用版本 : 2010
經驗值 : 4242
威望值 : 0
注冊日期 : 2014-04-18
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章