[已解決]修改hatch比例
2 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]修改hatch比例
下面是我寫的兩支程式...
一個是Auto LISP利用群碼來做修改(chghatsc)<-----失敗
另一個則是利用Visual LISP作修改的(chgps)<-----成功
chghatsc
請教各位高手&前輩....
(chghatsc)這支程式哪裡出問題了??
雖然他真的有修改群碼....但是我畫面上完全沒反應??
PS:不知道這樣問題表達是否清楚?
一個是Auto LISP利用群碼來做修改(chghatsc)<-----失敗
另一個則是利用Visual LISP作修改的(chgps)<-----成功
chghatsc
- 代碼:
;;;(chgendata 圖元 群碼 新值 ) 回應:更換圖元之某一新群碼值
(defun chgendata (#en #qnum #new)
(setq endata(entget #en));;;取得圖元資料
(setq oldlist (assoc #qnum endata))
(setq newlist (cons #qnum #new))
(setq endata (subst newlist oldlist endata))
(entmod endata)
)
(defun c:chghatsc();;連續單選改圓半徑+副程式
(setvar "cmdecho" 0);關閉LISP在指令區的操綽回應
(setq oldlay (getvar "clayer"));取出舊圖層設定值
(setq oldos (getvar "osmode"));取出舊物件鎖點設定值
(setvar "osmode" 0);關閉物件鎖點*避免物件鎖點干擾
(setq newval(getreal "\n新比例<1>:"))
(if (null newval) (setq newval 1))
(while
(setq en0 (entsel "選剖面線改比例:"));;;(圖元名稱 選點座標)
(setq en(car en0));;;取得圖元名稱
(chgendata en 41 newval)
)
(setvar "clayer" oldlay);還原圖層
(setvar "osmode" oldos);還原物件鎖點設定
(setvar "cmdecho" 1);還原LISP在指令區的操綽回應
(prin1)
)
- 代碼:
(defun c:chgPS()
(vl-load-com)
(setq en (car(entsel "選取剖面線:")))
(setq xobj(vlax-ename->vla-object en))
(setq newpatt (getreal "新比例<1>:"))
(if(null newpatt)(setq newpatt 1))
(vla-put-PatternScale xobj newpatt)
)
請教各位高手&前輩....
(chghatsc)這支程式哪裡出問題了??
雖然他真的有修改群碼....但是我畫面上完全沒反應??
PS:不知道這樣問題表達是否清楚?
leoneriol 在 2010-09-06, 11:39 作了第 1 次修改
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9202
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
回復: [已解決]修改hatch比例
我也下載了程式來研究,真的也是群碼已經改了,但hatch畫面卻沒更新.感覺好像entmod 對hatch的data更新值沒有反應,這只是我的想法,也不曉得主要原因是什麼,不過因為比例值確實改了,所以只要再進hatchedit直接按確定後,hatch的畫面就更新了,因為這樣我就把程式加了一行處理更新data值,不算是有回答了問題,但提出來供參考,希望知道什麼原因的大大可以解惑一下.
- 代碼:
(defun c:chghatsc();;連續單選改圓半徑+副程式
(setvar "cmdecho" 0);關閉LISP在指令區的操綽回應
(setq oldlay (getvar "clayer"));取出舊圖層設定值
(setq oldos (getvar "osmode"));取出舊物件鎖點設定值
(setvar "osmode" 0);關閉物件鎖點*避免物件鎖點干擾
(setq newval(getreal "\n新比例<1>:"))
(if (null newval) (setq newval 1))
(while
(setq en0 (entsel "選剖面線改比例:"));;;(圖元名稱 選點座標)
(setq en(car en0));;;取得圖元名稱
(chgendata en 41 newval)
(command "-hatchedit" en0 "p" "" "" "");加上本行做hatch比例值的畫面更新
)
(setvar "clayer" oldlay);還原圖層
(setvar "osmode" oldos);還原物件鎖點設定
(setvar "cmdecho" 1);還原LISP在指令區的操綽回應
(prin1)
)
ginse0727- 高級會員
- 文章總數 : 256
年齡 : 50
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 6831
威望值 : 500
發帖精華 : 1
注冊日期 : 2010-07-13
回復: [已解決]修改hatch比例
ginse0727 寫到:所以只要再進hatchedit直接按確定後,hatch的畫面就更新了,因為這樣我就把程式加了一行處理更新data值,不算是有回答了問題,但提出來供參考,希望知道什麼原因的大大可以解惑一下.
感恩~~!!
謝謝囉~~這確實是我需要的,您確實有回答道我提的問題,再次感謝
leoneriol- 榮譽顧問
- 文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9202
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章