删圆变十字线
下面是框选,识别圆,以圆心画十字线的lisp代码但是有个小问题,其中cr是指圆半径,但是我想让十字线长度为半径的60%,cl就是想要的值,但是cl (* cr 0.6)写上,下面的两个LINE中的cr改cl后就报错,不知道有什么问题,谁帮我解释下,需要怎么改才能实现十字线长度为半径的60%
(defun c:cct ( / ss n ent enttype cc cr cl)
(setq ss (ssget) n 0)
(repeat (sslength ss)
(setq ent (ssname ss n)
enttype (cdr (assoc 0 (entget ent)))
cc (cdr (assoc 10 (entget ent)))
cr (cdr (assoc 40 (entget ent)))
;cl (* cr 0.6)
)
(if (= enttype "CIRCLE")
(progn
(command "LINE" (list (- (car cc) cr) (cadr cc)) (list (+ (car cc) cr) (cadr cc)) "")
(command "LINE" (list (car cc) (- (cadr cc) cr)) (list (car cc) (+ (cadr cc) cr)) "")
(entdel ent)
)
)
(setq n (1+ n))
)
)
试了下,原版的和改成cl的都没有报错,正常运行。你是不是cl那行前面的分号没有删除? 本帖最后由 lifuq1979 于 2018-8-12 09:13 编辑
没毛病,我只是删掉没用的
(defun c:cct ( / ss n ent enttype cc cr cl)
(setq ss (ssget '((0 . "CIRCLE"))) n -1)
(repeat (sslength ss)
(setq ent (ssname ss (setq n (1+ n)))
cc (cdr (assoc 10 (entget ent)))
cr (*(cdr (assoc 40 (entget ent)))0.6)
)
(command "LINE" (list (- (car cc) cr) (cadr cc)) (list (+ (car cc) cr) (cadr cc)) "")
(command "LINE" (list (car cc) (- (cadr cc) cr)) (list (car cc) (+ (cadr cc) cr)) "")
(entdel ent)
)
)
本帖最后由 司徒妙嘉 于 2018-8-14 11:39 编辑
lostbalance 发表于 2018-8-11 15:44
试了下,原版的和改成cl的都没有报错,正常运行。你是不是cl那行前面的分号没有删除?
AutoCAD 2018 X64 ENWin10 X64 EN
以下是代码
(defun c:cct ( / ss n ent enttype cc cr cl)
(setq ss (ssget) n 0)
(repeat (sslength ss)
(setq ent (ssname ss n)
enttype (cdr (assoc 0 (entget ent)))
cc (cdr (assoc 10 (entget ent)))
cr (cdr (assoc 40 (entget ent)))
cl (* cr 0.6)
)
(if (= enttype "CIRCLE")
(progn
(command "LINE" (list (- (car cc) cl) (cadr cc)) (list (+ (car cc) cl) (cadr cc)) "")
(command "LINE" (list (car cc) (- (cadr cc) cl)) (list (car cc) (+ (cadr cc) cl)) "")
(entdel ent)
)
)
(setq n (1+ n))
)
)
以下是CAD的console反馈
Command: APPLOAD c2cc.lsp successfully loaded.
Command:
Command:
Command: CCT
Select objects: Specify opposite corner: 5 found
Select objects:; error: bad argument type: numberp: nil
参数类型错误??
lifuq1979 发表于 2018-8-12 09:05
没毛病,我只是删掉没用的
(defun c:cct ( / ss n ent enttype cc cr cl)
(setq ss (ssget '((0 . "CIRC ...
为什么会是这样令人匪夷所思的结果?
ref:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=178013 Andyhon 发表于 2018-8-14 12:04
ref:
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=178013
我竟然没想到,明明看到是些中点,交点! 画十字线的时候捕捉没有关吧
页:
[1]