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

[已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

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

[已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 老水牛 于 2010-10-06, 08:25

(defun c:dxft()
(setq bk1(entsel "\n選取欲修改的尺寸 : "))
(setq na (getint "\n輸入標註值 :"))
(setq b1 (entget (car bk1)))
(setq OLD (assoc 1 b1))
(setq naa (/ na 26))
(setq nab (itoa naa))
(setq na1 (strcat "26*"nab))
(setq NEW (CONS 1 NA1))
(SETQ B1 (SUBST NEW OLD B1)
)
(ENTMOD B1)
(princ)
)


老水牛 在 2010-10-08, 01:52 作了第 1 次修改

老水牛
初級會員
初級會員

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

回頂端 向下

回復: [已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 阿希 于 2010-10-07, 03:06

老水牛 寫到:(defun c:dxft()
(setq bk1(entsel "\n選取欲修改的尺寸 : "))
(setq na (getint "\n輸入標註值 :"))
(setq b1 (entget (car bk1)))
(setq OLD (assoc 1 b1))
(setq naa (/ na 26))
(setq nab (itoa naa))
(setq na1 (strcat "26*"nab))
(setq NEW (CONS 1 NA1))
(SETQ B1 (SUBST NEW OLD B1)
)
(ENTMOD B1)
(princ)
)


看不懂你的需求是啥 ?
如果說你的 (setq na (getint "\n輸入標註值 :")) 這部份指的是標註上的"值"
那你也已經知道它是多少了
程式稍微修改一下即可
(defun c:dxft()
(setq bk1(entsel "\n選取欲修改的尺寸 : "))
;;;;;;(setq na (getint "\n輸入標註值 :"))
(setq b1 (entget (car bk1)))
(setq na (cdr (assoc 1 b1)))
(setq OLD (assoc 1 b1))
(setq naa (/ na 26))
(setq nab (itoa naa))
(setq na1 (strcat "26*"nab))
(setq NEW (CONS 1 NA1))
(SETQ B1 (SUBST NEW OLD B1)
)
(ENTMOD B1)
(princ)
)

綠色為原程式移除的部份
紅色為新增的部份
***未經測試~僅以程式架構做修正***

阿希
高級會員
高級會員

文章總數 : 335
年齡 : 36
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 4145
威望值 : 196
發帖精華 : 1
注冊日期 : 2008-09-22
男 摩羯座 猴

回頂端 向下

回復: [已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 老水牛 于 2010-10-07, 09:31

阿希大大:
我要的需求是,選取標註,取得該標註值,經計算後,將計算後的值取代原標註。
也就是說 我要如何抽取尺寸標註DXF碼中的標註文字

老水牛
初級會員
初級會員

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

回頂端 向下

回復: [已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 阿希 于 2010-10-07, 10:52

老水牛 寫到:阿希大大:
我要的需求是,選取標註,取得該標註值,經計算後,將計算後的值取代原標註。
也就是說 我要如何抽取尺寸標註DXF碼中的標註文字


上面我修改的程式可行嗎 ?

阿希
高級會員
高級會員

文章總數 : 335
年齡 : 36
來自 : 台北
職業 : 水電設計
愛好 : autolisp
個性 : 和平主義者
使用年資 : 5
使用版本 : 2008
積分 : 19
經驗值 : 4145
威望值 : 196
發帖精華 : 1
注冊日期 : 2008-09-22
男 摩羯座 猴

回頂端 向下

回復: [已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 張譽璋 于 2010-10-07, 18:04

我將程式作修改如下,你試用看看
代碼:
(defun c:dxft()
  (setq bk1(entsel "\n選取欲修改的尺寸 : "))
  (setq b1 (entget (car bk1)))
  (setq na (cdr (assoc 42 b1)))
  (setq OLD (assoc 1 b1))
  (setq naa (/ na 26))
  (setq nab (rtos naa))
  (setq na1 (strcat "26*" nab))
  (setq NEW (CONS 1 NA1))
  (SETQ B1 (SUBST NEW OLD B1))
  (ENTMOD B1)
  (princ)
)
這樣應該符合你的需要,另外跟你說明一下,
要抓出尺寸的值必須使用 dxf群碼 42 ,不是 1
因為尺寸是內定值 <>,這樣的值是無法運算的 微笑

張譽璋
榮譽顧問
榮譽顧問

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

回頂端 向下

回復: [已解決][討論]程式修改,下列程式要如何修改,只要點取標註,不需再輸入標註值即可達到我的要求

發表 由 老水牛 于 2010-10-08, 01:49

感謝張老師的指導。
讓我對DXF群碼有更進一步的了解。

老水牛
初級會員
初級會員

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

回頂端 向下

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


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