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

[已解決]lisp拉伸變形

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

[已解決]lisp拉伸變形

發表 由 r1543761189 于 2011-12-09, 03:15

代碼:
(defun c:2031()
  (setvar "cmdecho" 0)         
  (setq c_osmode (getvar "osmode"))      ;取得物件鎖點的資料
  (setq xy00 (getpoint "Enter Left/Low Point:")) ;點選中心點
  (setvar "osmode" 0)          ;物件鎖點    關閉       
                                           
    (setq swww 200) ;左右拉伸的距離 
    (setq shhh 200) ;上下拉伸的距離
    (setq xwww 260) ;x要加的距離
    (setq yhhh 260) ;y要加的距離

    (setq se01 (polar xy00 0 swww )) ;向右拉伸的點
    (setq sw01 (polar xy00 pi swww )) ;向左拉伸的點
    (setq ss01 (polar xy00 (* pi 1.5) shhh )) ;向下拉伸的點
    (setq sn01 (polar xy00 (* pi 0.5) shhh )) ;向上拉伸的點

    (setq xe01 (polar xy00 0 xwww ))            ;x右邊的點
    (setq xw01 (polar xy00 pi xwww))            ;x左邊的點
    (setq ys01 (polar xy00 (* pi 1.5) yhhh))    ;y下面的點
    (setq yn01 (polar xy00 (* pi 0.5) yhhh))    ;y上面的點

    (command "-insert"  "D:\\MYLISP\\訂製品\\鐵板"  xy00 1 1 0 )  ;插入底板圖塊
    (setvar "qaflags" 1)
    (command "EXPLODE" "c" (polar  ys01 0 swww) (polar yn01 pi swww) "" );炸開 圖塊

    (COMMAND "STRETCH" "C" xe01 (polar xw01 (* pi 1.5) 350) ""  xy00 ss01) ;向下拉伸
    (COMMAND "STRETCH" "C" xe01 (polar xw01 (* pi 0.5) 250) ""  xy00 sn01) ;向上拉伸
    (COMMAND "STRETCH" "C" ys01 (polar yn01 0 xwww) ""  xy00 se01) ;向右拉伸
    (COMMAND "STRETCH" "C" ys01 (polar yn01 pi xwww) ""  xy00 sw01) ;向左拉伸
 
    (setvar "qaflags" 0)
    (setvar "cmdecho" 1)  ;  執行 指令函數時,對提示和輸入進行回應
    (setvar "osmode" c_osmode)      ;恢復物件鎖點的值
 
 )
以上我寫的程式

這段程式有時候可以,有時候就會變形
當我將視窗一值縮小後(物件變到最小),在執行程式,出現的物件就會變形
當我將視窗一值縮大後(物件變到最大),在執行程式,出現的物件就會變形

只有在適當大小時才會正常的拉伸,

想請問各位前輩~我的程式哪裡出了問題需要怎麼修正?

附件
鐵板.zip 您無權下載這里的附件。(8 Kb) 下載 9 次


r1543761189 在 2012-01-05, 01:09 作了第 1 次修改
avatar
r1543761189
一般會員
一般會員

文章總數 : 21
年齡 : 36
來自 : 彰化
職業 : 設計
愛好 : 布袋戲
個性 : 安靜
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 2239
威望值 : 0
注冊日期 : 2011-09-30
男 天秤座 猴

回頂端 向下

回復: [已解決]lisp拉伸變形

發表 由 shenhung 于 2011-12-09, 06:10

r1543761189 寫到:
代碼:
(defun c:2031()
  (setvar "cmdecho" 0)         
  (setq c_osmode (getvar "osmode"))      ;取得物件鎖點的資料
  (setq xy00 (getpoint "Enter Left/Low Point:")) ;點選中心點
  (setvar "osmode" 0)          ;物件鎖點    關閉       
                                           
    (setq swww 200) ;左右拉伸的距離 
    (setq shhh 200) ;上下拉伸的距離
    (setq xwww 260) ;x要加的距離
    (setq yhhh 260) ;y要加的距離

    (setq se01 (polar xy00 0 swww )) ;向右拉伸的點
    (setq sw01 (polar xy00 pi swww )) ;向左拉伸的點
    (setq ss01 (polar xy00 (* pi 1.5) shhh )) ;向下拉伸的點
    (setq sn01 (polar xy00 (* pi 0.5) shhh )) ;向上拉伸的點

    (setq xe01 (polar xy00 0 xwww ))            ;x右邊的點
    (setq xw01 (polar xy00 pi xwww))            ;x左邊的點
    (setq ys01 (polar xy00 (* pi 1.5) yhhh))    ;y下面的點
    (setq yn01 (polar xy00 (* pi 0.5) yhhh))    ;y上面的點

    (command "-insert"  "D:\\MYLISP\\訂製品\\鐵板"  xy00 1 1 0 )  ;插入底板圖塊
  (command "zoom" "E" )
  (command "zoom" "0.5x" )
  (setvar "qaflags" 1)
    (command "EXPLODE" "c" (polar  ys01 0 swww) (polar yn01 pi swww) "" );炸開 圖塊

    (COMMAND "STRETCH" "C" xe01 (polar xw01 (* pi 1.5) 350) ""  xy00 ss01) ;向下拉伸
    (COMMAND "STRETCH" "C" xe01 (polar xw01 (* pi 0.5) 250) ""  xy00 sn01) ;向上拉伸
    (COMMAND "STRETCH" "C" ys01 (polar yn01 0 xwww) ""  xy00 se01) ;向右拉伸
    (COMMAND "STRETCH" "C" ys01 (polar yn01 pi xwww) ""  xy00 sw01) ;向左拉伸
 
    (setvar "qaflags" 0)
    (setvar "cmdecho" 1)  ;  執行 指令函數時,對提示和輸入進行回應
    (setvar "osmode" c_osmode)      ;恢復物件鎖點的值
 
 )

做編輯動作 ..圖元超出視窗外是選不到東西的.
因為程式狀態.無法判別目前視窗大小
最簡單的方式..就是..ZOOM 到E
然後縮小一點.. 確保圖元都在視窗可見之處...
我只加了2行..你試看看.!!


avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4934
威望值 : 904
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]lisp拉伸變形

發表 由 r1543761189 于 2011-12-09, 11:01

好了~好了~
謝謝~shenhung 大大的指導~
感動
avatar
r1543761189
一般會員
一般會員

文章總數 : 21
年齡 : 36
來自 : 彰化
職業 : 設計
愛好 : 布袋戲
個性 : 安靜
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 2239
威望值 : 0
注冊日期 : 2011-09-30
男 天秤座 猴

回頂端 向下

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


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