iCAx开思网

标题: 【求助】LISP 相關 [打印本页]

作者: iham    时间: 2002-6-26 15:05
标题: 【求助】LISP 相關
敝人新學 LISP.編第一個 LISP 程序就遇到一個麻煩事.  
程序如下(為了實現點選圓或圓弧直接生成中心線):  
  
(defun c:xo ()  
   (setvar "cmdecho" 0)  
   (setvar "blipmode" 0)  
  
   ;取得圓心座標數據  
   (setq BC(entsel "Select a Circle or Arc:"))  
   (setq center(cdr (assoc 10 (entget (car BC)))))  
  
   ;取得半徑值  
   (setq ra(cdr (assoc 40 (entget (car BC)))))  
  
   ;分別取得左,右,上,下各繪圖點座標數據  
   (setq l(polar center pi (/ ra 5)))  
   (setq r(polar center 0 (/ ra 5)))  
   (setq u(polar center (/ pi 2) (/ ra 5)))  
   (setq o(polar center (/(* pi 3) 2)  (/ ra 5)))  
  
   ;以下依据 l,r,u,o繪線  
   (command "line" l r "")  
   (command "line" u o "")  
  
   (prin1)  
)  
(prompt "********** << C:xo >> **********")  
(prin1)
  
  
但在使用時,圖形很小時就只有一個點,這是輸入命令后的提示:  
   指令: xo  
    Select a Circle or Arc:在 (262.4982, 124.5987, 0.0000) 建立了長度為零的線  
    在 (262.4982, 124.5987, 0.0000) 建立了長度為零的線
  
  
稍微放大一點就只畫出一根線.放足夠大才有十字線.  
  
望高手指點 !
作者: haha    时间: 2002-6-27 09:31
把 对象捕做 关掉就OK.
作者: iham    时间: 2002-6-27 17:44
haha說的對, 這是我在海信上問到的
  
(defun c:xo ()  
   (setvar "cmdecho" 0)  
   (setvar "blipmode" 0)  
   (setq os(getvar "osmode"))
  (SetVar "osmode" 0)

  
   ;取得圓心座標數據  
   .
   .
   .
   (SetVar "osmode" os)
   (prin1)  
)  
(prompt "********** << C:xo >> **********")  
(prin1)




欢迎光临 iCAx开思网 (https://www.icax.org/) Powered by Discuz! X3.3