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

[已解決]修改hatch比例

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

[已解決]修改hatch比例

發表 由 leoneriol 于 2010-08-30, 09:05

下面是我寫的兩支程式...
一個是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)
  )
chgps
代碼:
(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, 04:39 作了第 1 次修改
avatar
leoneriol
榮譽顧問
榮譽顧問

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

回頂端 向下

回復: [已解決]修改hatch比例

發表 由 ginse0727 于 2010-09-05, 13:15

我也下載了程式來研究,真的也是群碼已經改了,但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)
  )
avatar
ginse0727
高級會員
高級會員

文章總數 : 256
年齡 : 43
來自 : 台北巿
職業 : 帷幕牆
愛好 : 電玩,漫畫,網路小說
個性 : 宅男/正直/死腦筋
使用年資 : 退伍後工作迄今,10年以上
使用版本 : 2012
積分 : 14
經驗值 : 4234
威望值 : 492
發帖精華 : 1
注冊日期 : 2010-07-12
經典問與答讀者 藍鵲61號
2011聚會勳章 男 獅子座 虎

回頂端 向下

回復: [已解決]修改hatch比例

發表 由 leoneriol 于 2010-09-06, 04:41

ginse0727 寫到:所以只要再進hatchedit直接按確定後,hatch的畫面就更新了,因為這樣我就把程式加了一行處理更新data值,不算是有回答了問題,但提出來供參考,希望知道什麼原因的大大可以解惑一下. 暈倒

感恩~~!! 感動

謝謝囉~~這確實是我需要的,您確實有回答道我提的問題,再次感謝 熱情
avatar
leoneriol
榮譽顧問
榮譽顧問

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

回頂端 向下

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


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