AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]執行完繪圖指令後將物件放置預設的圖層

2頁(共2頁) 上一頁  1, 2

上一篇主題 下一篇主題 向下

[討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 leoneriol 于 2010-05-19, 09:04

主題回顧 :

代碼:
(defun c:1a();;線性
  (setvar "cmdecho" 0);關閉LISP在指令區的操綽回應
  (setq oldlay (getvar "clayer"));取出舊圖層設定值
  (setq oldos (getvar "osmode"));取出舊物件鎖點設定值
  (setvar "osmode" 0);關閉物件鎖點*避免物件鎖點干擾
  (command "-layer" "s" "標註" "")
  (command "_dimlinear" pause pause pause)
  (setvar "clayer" oldlay);還原圖層
  (setvar "osmode" oldos);還原物件鎖點設定
  (setvar "cmdecho" 1);還原LISP在指令區的操綽回應
  (prin1)
  )
以此程式為例,希望線性標註直接畫在既設的標註圖層下
但是我主要碰的的問題是(command "_dimlinear" pause pause pause)
一次pause可以讓使用者輸入一次,但是如果我想要使用無限次的話要怎麼呢??
又萬一我想要用線性標註指令內的文字取代的話我又應該如何處理比較好??

此程式是小弟目前在幫做室內設計的朋友寫的,
他的需求其實只是希望能有個按鈕或指令,
在他畫標註(dimlinear),柱子(pline)或是牆(line)的時圖層自動跑去相對應的圖層
不知道前輩有沒有甚麼建議或是意見能提供呢?


Tiger&蘋果爸 在 2010-05-26, 05:39 作了第 2 次修改 (原因 : 此主題為[討論]類型)
avatar
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 816
年齡 : 33
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 6637
威望值 : 938
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下


回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 張譽璋 于 2010-08-03, 00:35

幫大家補一段程式可以增加自動建立圖層的功能,又可以將物件至於指定圖層中

代碼:
(defun ladim ()
    (setq nla (tblsearch "layer" "DIM"))
    (setq nlb (cdr (assoc 2 nla)))
    (if (= nla nil) (progn (command "layer" "n" "DIM" "c" "252" "DIM" "l" "continuous" "DIM"
                                    "lw" "0.09" "DIM" "")
                          (setvar "clayer" "DIM")
                          (setq nlb (getvar "clayer"))
                    )
    )
    (setvar "clayer" nlb)
  )
(setq layold (getvar "clayer"))
(ladim)
(command "dimlinear" pause pause pause)
(setvar "clayer" layold)

張譽璋
榮譽顧問
榮譽顧問

文章總數 : 303
年齡 : 47
來自 : 彰化縣員林鎮
職業 : 機械設計工程師/AutoCAD講師/AutoCAD外掛系統開發/AutoCAD書籍作者
愛好 : 旅行及電影
個性 : 風趣健談
使用年資 : 25年
使用版本 : AutoCAD2010/2011/2012/2013
積分 : 20
經驗值 : 4968
威望值 : 624
發帖精華 : 2
回帖精華 : 1
注冊日期 : 2008-05-28
藍鵲12號
男 處女座 狗

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 anais99 于 2010-10-07, 05:38

我也要來看看大家所討論的程式,感謝大家的分享!
avatar
anais99
初級會員
初級會員

文章總數 : 79
年齡 : 39
來自 : 台北縣
職業 : 模具製圖
愛好 : 騎自行車
個性 : 開朗
使用年資 : 12
使用版本 : 2010
積分 : 4
經驗值 : 3016
威望值 : 12
注冊日期 : 2010-06-14
串連貼紙成功 女 雙子座 馬

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 妤璇 于 2010-10-26, 08:03

我也想用看看,每次在標柱時我都要把圖層改為標柱圖層 生氣

avatar
妤璇
初級會員
初級會員

文章總數 : 66
年齡 : 40
來自 : 台中市
職業 : 家管
愛好 : 看書、音樂、戶外活動、逗女兒生氣……
個性 : 溫和
使用年資 : 五年
使用版本 : 2011
積分 : 3
經驗值 : 2888
威望值 : 39
注冊日期 : 2010-10-01
串連貼紙成功 女 雙子座 蛇

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 enemaman 于 2011-07-13, 10:32

謝謝蘋果爸跟DevilWang的解答,一切的謎題都解開了。

我是打算讓xline在輔助線圖層上,畫完之後再回到原先使用的圖層。
不過剛開始試著玩巨集,搞了一上午搞不定。
剛好拿這篇解說來套用,太感謝了
avatar
enemaman
一般會員
一般會員

文章總數 : 12
年齡 : 37
來自 : 台中市
職業 : 建築設計
愛好 : 音樂演奏、欣賞
個性 : 邪惡
使用年資 : 9
使用版本 : 2006
經驗值 : 2406
威望值 : 18
注冊日期 : 2011-07-13
男 巨蟹座 猴

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 adslwang 于 2011-07-13, 15:01

DevilWang 寫到:蘋果爸的 Lisp 應該是經過簡化了。
使用程式可能需注意兩點:
1. 儲存目前圖層變數
2. 使用時按 Enter 中斷時機須在出現"指定第二條延伸線原點"時,才能回到原圖層。

以下是根據你的程式稍加調整的(按 Esc 中斷),提供參考。
(程式回覆可見)

(while (/= (getvar "ERRNO") 52)
請問這一行的意思是檢查錯誤嘛? 52代表什麼意思呢?

52代表說明:
http://www.autocad-tw.com/t10509-topic#72283


Tiger&蘋果爸 在 2011-07-16, 04:32 作了第 1 次修改 (原因 : 補充)
avatar
adslwang
高級會員
高級會員

文章總數 : 372
年齡 : 39
來自 : 台南
職業 : 自由業
愛好 : 電腦、旅行
個性 : 樂觀
使用年資 : 1年
使用版本 : 2009
積分 : 17
經驗值 : 4659
威望值 : 355
回帖精華 : 1
注冊日期 : 2008-10-02
藍鵲88號
男 處女座 馬

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 vl7120 于 2012-03-10, 06:34

真是個魚幫水水幫魚的地方
感謝蘋果爸等各位LISP高手的付出
avatar
vl7120
初級會員
初級會員

文章總數 : 83
年齡 : 48
來自 : 高雄
職業 : 待業
愛好 : 旅遊
個性 : 木訥
使用年資 : 新手初學
使用版本 : 2000
積分 : 1
經驗值 : 2722
威望值 : 45
注冊日期 : 2011-07-02
藍鵲215號
女 天秤座 雞

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 hsian 于 2012-03-13, 08:05

對LISP很陌生,想了解一下...
avatar
hsian
初級會員
初級會員

文章總數 : 29
年齡 : 42
來自 : 桃園
職業 : 機械製圖
愛好 : 聽音樂,戶外踏青
個性 : 死腦筋
使用年資 : 1年
使用版本 : 2009
積分 : 3
經驗值 : 3105
威望值 : 40
注冊日期 : 2009-10-27
藍鵲550號
男 天蝎座 兔

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 希卡亞 于 2012-11-16, 04:55

對於切換標註圖層的問題一直很困擾...
一直在尋找解決問題做法
avatar
希卡亞
一般會員
一般會員

文章總數 : 6
年齡 : 30
來自 : 宜蘭
職業 : 工業設計
愛好 : CAD,3DMAX,SketchUp
個性 : 沉默,投機取巧
使用年資 : 1年
使用版本 : AutoCAD2008
經驗值 : 1886
威望值 : 0
注冊日期 : 2012-11-08
男 摩羯座 虎

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 chengshunyi 于 2012-11-18, 03:12

可以做成副程式方便設計時取用
也可依個人需求再擴充
程式碼如下,是書上的範例,供參考
(defun s_acad_sysvar()
(setq acad_sysvar_list '("clayer" "osmode" "textstyle" "cmdecho" "celtype"))
(setq old_sysvar_list (mapcar 'getvar acad_sysvar_list))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(command "undo" "be")
)
(defun r_acad_sysvar()
(command "undo" "e")
(mapcar 'setvar acad_sysvar_list old_sysvar_list)
(prin1)
)
avatar
chengshunyi
一般會員
一般會員

文章總數 : 19
年齡 : 51
來自 : 台北市文山區
職業 : 建築規劃
愛好 : 散步
個性 : 溫和
使用年資 : 15
使用版本 : 2012
經驗值 : 2872
威望值 : 54
注冊日期 : 2010-07-04
男 處女座 馬

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 Tiger&蘋果爸 于 2013-01-13, 03:18

weiyaolieh 寫到:test test
提醒您:
回覆文章不得少於10個字(不包含符號,不可以重複),請多點鼓勵與互動!!
說明: http://www.autocad-tw.com/t7044-topic

謝謝配合~

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17328
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 65335
威望值 : 12868
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 djh1006 于 2013-04-07, 15:10

試試以下程式,這是我們公司的設定,標註完後會自動將標註物件變更到DIM圖層,可依自己需求修改圖層名稱

;DJH_080.lsp
;線性標註
(defun C:DJH_080(/ LL OCE OCT OCV PT1 PT2 P1 P2 PTN PTN4)
(graphscr)
(command "-LAYER" "P" "N" "0" "");將0層設為不出圖
(setq LL (tblsearch "LAYER" "DIM"));看看這個圖檔是否有DIM層
(if (= LL nil)(command "-LAYER" "N" "DIM" ""));若沒DIM層則新增DIM層
(command "-LAYER" "ON" "DIM" "T" "DIM" "U" "DIM" "");設定DIM層的條件
(setq
OCE (getvar "CMDECHO")
OCT (getvar "CTAB");UCS不在世界座標時的差值
OCV (getvar "CVPORT");判斷是否在模型空間
PT1 nil
PT2 nil
)
(setvar "CMDECHO" 0)
(setq PT1 (getpoint "\n指定第一條延伸線原點:"))
(if (/= PT1 nil)
(setq PT2 (getpoint PT1 "\n指定第二條延伸線原點:"))
)
(while (/= PT1 nil)
(command "UNDO" "BE")
(command "DIMLINEAR" PT1 PT2);線性標註指令,對齊式指令DIMALIGNED
(while (= (getvar "CMDACTIVE") 1)
(command pause)
)
(setq P1 (polar PT1 (/ (* 135 PI) 180) 10));找出第一點的左上角10mm處
(setq P2 (polar PT1 (/ (* 315 PI) 180) 10));找出第一點的右下角10mm處
(command "ZOOM" P1 P2);放大第一點附近_將上面的標註變成DIM層
(setq PTN (ssget PT1))
(if (/= PTN nil)
(progn
(setq PTN4 (cdr (assoc 0 (entget (ssname PTN 0)))))
(if (= PTN4 "DIMENSION")
(command "CHANGE" PT1 "" "P" "LA" "DIM" "C" "BYLAYER" "LT" "BYLAYER" "")將上面的標註變成DIM層
)
)
)
(command "ZOOM" "P")
(command "UNDO" "E")
(if (and (/= OCT "Model")(/= OCV 1))(command "MSPACE"));若在配置而不在視埠內時,切換到作用的視埠,不知道此行是否可以刪除?
(setq PT1 (getpoint "\n指定第一條延伸線原點:"))
(if (/= PT1 nil)
(setq PT2 (getpoint PT1 "\n指定第二條延伸線原點:"))
)
) ;end while
(princ)
)
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3461
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 lingo_st 于 2013-04-21, 09:59

這篇文章起初一直看不出用途,剛剛才發現是個很體貼的想法.
看看討論感覺也吸收到一點
很高興又挖到寶
感恩囉
avatar
lingo_st
中級會員
中級會員

文章總數 : 211
年齡 : 53
來自 : 新北市
職業 : 營造,建設
愛好 : 學習,服務,電腦軟硬體
個性 : 正直,達觀且無可救藥的雞婆
使用年資 : 使用12年但真的是新手
使用版本 : 2012,2013
積分 : 6
經驗值 : 3432
威望值 : 271
注冊日期 : 2011-12-18
經典問與答讀者 藍鵲238號
男 雙魚座 龍

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 DARDAR 于 2013-04-21, 12:57

很陌生LISP,來試試看~~謝謝分享囉............ 害羞
avatar
DARDAR
高級會員
高級會員

文章總數 : 281
年齡 : 59
來自 : 台北
職業 : 營造金屬
愛好 : AutoCAD
個性 : 隨和
使用年資 : 5年↑
使用版本 : 2012
積分 : 15
經驗值 : 3958
威望值 : 90
注冊日期 : 2008-05-13
經典問與答讀者 藍鵲49號
男 白羊座 狗

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 wu200090 于 2013-07-21, 04:07

在 Mechanical 底下可以自定三個圖層,所以我都是用key的來指定這常用的三個圖層,當然是不夠,如果可以隨意增加指定層,那真是太棒了,來看看,先謝了
avatar
wu200090
初級會員
初級會員

文章總數 : 129
年齡 : 44
來自 : 高雄市
職業 : 沖,塑模設計
愛好 : 大自然,登山健行
個性 : 随和
使用年資 : 9
使用版本 : 2012
積分 : 2
經驗值 : 3138
威望值 : 163
注冊日期 : 2011-03-27
經典問與答讀者 藍鵲113號
男 射手座 牛

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 judyyai 于 2013-07-21, 04:39

djh1006 寫到:試試以下程式,這是我們公司的設定,標註完後會自動將標註物件變更到DIM圖層,可依自己需求修改圖層名稱

代碼:
;DJH_080.lsp
;線性標註
(defun C:DJH_080(/ LL OCE OCT OCV PT1 PT2 P1 P2 PTN PTN4)
  (graphscr)
  (command "-LAYER" "P" "N" "0" "");將0層設為不出圖
  (setq LL (tblsearch "LAYER" "DIM"));看看這個圖檔是否有DIM層
  (if (= LL nil)(command "-LAYER" "N" "DIM" ""));若沒DIM層則新增DIM層
  (command "-LAYER" "ON" "DIM" "T" "DIM" "U" "DIM" "");設定DIM層的條件
  (setq
    OCE (getvar "CMDECHO")
    OCT (getvar "CTAB");UCS不在世界座標時的差值
    OCV (getvar "CVPORT");判斷是否在模型空間
    PT1 nil
    PT2 nil
  )
  (setvar "CMDECHO" 0)
  (setq PT1 (getpoint "\n指定第一條延伸線原點:"))
  (if (/= PT1 nil)
    (setq PT2 (getpoint PT1 "\n指定第二條延伸線原點:"))
  )
  (while (/= PT1 nil)
    (command "UNDO" "BE")
    (command "DIMLINEAR" PT1 PT2);線性標註指令,對齊式指令DIMALIGNED
    (while (= (getvar "CMDACTIVE") 1)
      (command pause)
   )
    (setq P1 (polar PT1 (/ (* 135 PI) 180) 10));找出第一點的左上角10mm處
    (setq P2 (polar PT1 (/ (* 315 PI) 180) 10));找出第一點的右下角10mm處
    (command "ZOOM" P1 P2);放大第一點附近_將上面的標註變成DIM層
    (setq PTN (ssget PT1))
    (if (/= PTN nil)
      (progn
        (setq PTN4 (cdr (assoc 0 (entget (ssname PTN 0)))))
        (if (= PTN4 "DIMENSION")
          (command "CHANGE" PT1 "" "P" "LA" "DIM" "C" "BYLAYER" "LT" "BYLAYER" "")將上面的標註變成DIM層
       )
      )
    )
    (command "ZOOM" "P")
    (command "UNDO" "E")
    (if (and (/= OCT "Model")(/= OCV 1))(command "MSPACE"));若在配置而不在視埠內時,切換到作用的視埠,不知道此行是否可以刪除?
    (setq PT1 (getpoint "\n指定第一條延伸線原點:"))
    (if (/= PT1 nil)
      (setq PT2 (getpoint PT1 "\n指定第二條延伸線原點:"))
    )
  )  ;end while
  (princ)
)

感謝分享~有空來試試看~

____________________________________________________________________________________
avatar
judyyai
管理顧問
管理顧問

文章總數 : 7649
年齡 : 40
來自 : 台南
職業 : 機械製圖
愛好 : 電腦相關
個性 : think too much...
使用年資 : 10↑
使用版本 : AC2014(開始於2015九月底)
AutoCAD基礎篇等級 : 10星級
積分 : 392
最佳解答 : 1
經驗值 : 27270
威望值 : 3466
發帖精華 : 2
回帖精華 : 4
注冊日期 : 2008-11-19
2D基礎函授 3D基礎函授 顧問外掛程式 經典問與答讀者 藍鵲2號
2009聚會勳章 串連貼紙成功 女 巨蟹座 蛇

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 老水牛 于 2015-05-19, 07:07

我正遇這方面的問題,看看有什麼更好的方法可以解決

老水牛
初級會員
初級會員

文章總數 : 105
年齡 : 56
來自 : 台北縣
職業 : 電機
愛好 : 閱讀
個性 : 溫和
使用年資 : 6
使用版本 : 2006
積分 : 1
經驗值 : 3583
威望值 : 3
注冊日期 : 2008-10-17
男 天蝎座 牛

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 ShineHo 于 2015-06-04, 16:26

這真的很實用....有空來試試,謝謝分享
avatar
ShineHo
一般會員
一般會員

文章總數 : 19
年齡 : 32
來自 : 台北
職業 : 室內設計
愛好 : 美食
個性 : 安靜
使用年資 : 12年
使用版本 : 2013
經驗值 : 1064
威望值 : 0
注冊日期 : 2015-04-04
男 天秤座 牛

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 ccsu009 于 2016-01-20, 10:27

有興趣lisp、也想看 DevilWang的回覆
希望學到東西、並且希望會越來越有經驗
avatar
ccsu009
初級會員
初級會員

文章總數 : 39
年齡 : 55
來自 : 高雄
職業 : 待業
愛好 : 上網,電玩遊戲
個性 : 內向寡言
使用年資 : 新手初學
使用版本 : 2014
積分 : 1
最佳解答 : 1
經驗值 : 922
威望值 : 30
注冊日期 : 2015-12-04
男 天秤座 虎

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 ming1789 于 2016-07-19, 00:31

感謝蘋果爸的分享
avatar
ming1789
一般會員
一般會員

文章總數 : 20
年齡 : 42
來自 : 彰化
職業 : 機械
愛好 : 上網
個性 : 樂觀
使用年資 : 10
使用版本 : 2014
經驗值 : 644
威望值 : 0
注冊日期 : 2016-06-18
男 獅子座 兔

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 djh1006 于 2016-07-20, 05:27

可以參考一下這個程式
http://www.autocad-tw.com/t17991-topic
avatar
djh1006
中級會員
中級會員

文章總數 : 156
年齡 : 46
來自 : 彰化縣員林鎮中山路二段369巷二弄15-14號
職業 : 沖壓模具設計工程師
愛好 : UG,SOLIDWORKS,AUTOCAD 2D,autolisp
個性 : 內向偏外
使用年資 : 18以上
使用版本 : 2014
積分 : 6
經驗值 : 3461
威望值 : 294
注冊日期 : 2011-06-16
男 獅子座 豬

回頂端 向下

回復: [討論]執行完繪圖指令後將物件放置預設的圖層

發表 由 id66fion 于 2016-09-06, 16:31

遇到相同問題,希望可以增進功力
avatar
id66fion
初級會員
初級會員

文章總數 : 41
年齡 : 40
來自 : 台北
職業 : 家管
愛好 : 研究CAD
個性 : 對cad 有高度熱情
使用年資 : 5年
使用版本 : 2008
積分 : 2
經驗值 : 3126
威望值 : 18
注冊日期 : 2009-10-17
女 雙子座 蛇

回頂端 向下

2頁(共2頁) 上一頁  1, 2

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章