请教热i心的朋友们.一个圆排列的问题。
;排列圆.以半径为距离排列圆.有问题.目的。
(defun c:tt()
(princ " \n 点选圆");
(setvar "CMDECHO" 0);_关闭命令提示
(Setvar "osmode" 0);_关闭捕捉
(if (setq ss (ssget '((0 . "circle"))))
(progn
(setqpt0 (getpoint "排列起始点"));可运行成功
(setq i 0)
(repeat (sslength ss)
(setq ss0 (ssname ss i)
en (entget ss0)
cen-10(cdr (assoc 10 en)) ;pt=圆心坐标
rad-40(cdr (assoc 40 en)) ;pt=圆半径
i (1+ i)
); (setq ss0
;------------------------------------------------------------------
(setqptz(polarpt0pirad-40 ) );圆左边点。
(setqpty (polarpt00rad-40 ) );圆右边点。
(setqpt0 ptz );圆左边点赋值给pt0 。
;------------------------------------------------------------------
( command"move"
ss0
""
cen-10
pty
""
);command
); (repeat
)
)
)
;; 需要e派工具箱(XCAD)的支持:http://yunpan.cn/QXQKsW9gAPmpF
(defun c:tt ()
(princ " \n选择圆: ")
(if (and (setq ss (ssget '((0 . "circle"))))
(setq pt0 (getpoint "排列起始点: "))
)
(progn
(setq lst (xyp-ss2list ss)
lst (mapcar '(lambda (x) (list x (xyp-DXF 40 x))) lst)
lst (vl-sort lst '(lambda (x y) (< (cadr x) (cadr y))))
)
(foreach a lst
(setq s1(car a)
rr(cadr a)
pt(xyp-DXF 10 s1)
pt0 (xyp-Pt2X pt0 rr)
)
(xyp-move s1 pt pt0)
(setq pt0 (xyp-Pt2X pt0 rr))
)
)
)
(princ)
)
xyp1964 发表于 2013-12-24 23:06 static/image/common/back.gif
谢谢院长的指导。这么晚了。还出手相助。真的很感动! 434939575 发表于 2013-12-25 09:27 static/image/common/back.gif
谢谢院长的指导。这么晚了。还出手相助。真的很感动!
;排列圆.以半径为距离排列圆.有问题.
;modfiy by edata @2013-12-25 10:51:17
(defun c:tt(/ CEN-10 EN I O_CMD O_OS PT0 PTY RAD-40 SS SS0);局部变量要设置
(princ " \n 按大小点选圆");无排序函数,按选择排序
(setq o_cmd (getvar "CMDECHO"));保存要更改的变量值
(setq o_os (getvar "osmode"));保存要更改的变量值
(setvar "CMDECHO" 0);_关闭命令提示
(Setvar "osmode" 0);_关闭捕捉
(if (setq ss (ssget '((0 . "circle"))))
(progn
(setqpt0 (getpoint "排列起始点"));可运行成功
(setq i 0)
(repeat (sslength ss)
(setq ss0 (ssname ss i)
en (entget ss0)
cen-10(cdr (assoc 10 en)) ;pt=圆心坐标
rad-40(cdr (assoc 40 en)) ;pt=圆半径
i (1+ i)
); (setq ss0
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
(setq pty(polar cen-10 0 rad-40));获得原来圆的右面点
(setq pt0(polar pt0 0 (+ rad-40 rad-40)));设置新的右边点
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;;;;------------------------------------------------------------------
;;; (setqptz(polarpt0pirad-40 ) );圆左边点。
;;; (setqpty (polarptz0 (* rad-402)) );圆右边点。
;;; (setqpt0 pty );圆左边点赋值给pt0 。
;------------------------------------------------------------------
(command "move" ss0 "" pty pt0 "") ;command
); (repeat
)
)
(and o_cmd (setvar "CMDECHO" o_cmd));恢复更改的变量值
(and o_os (setvar "osmode" o_os));恢复更改的变量值
) edata 发表于 2013-12-25 10:51 static/image/common/back.gif
谢谢这位朋友热心的帮助。乃冬日里的阳光。再次感谢! 434939575 发表于 2013-12-25 15:44 static/image/common/back.gif
谢谢这位朋友热心的帮助。乃冬日里的阳光。再次感谢!
;排列圆.以半径为距离排列圆.有问题.
;modfiy by edata @2013-12-25 10:51:17
;modfiy by edata @2013-12-31 22:32:28
(defun c:tt(/ CEN-10 EN I O_CMD O_OS PT0 PTY RAD-40 SS SS0);局部变量要设置
(princ " \n 按大小点选圆");无排序函数,按选择排序
(setq o_cmd (getvar "CMDECHO"));保存要更改的变量值
(setq o_os (getvar "osmode"));保存要更改的变量值
(setvar "CMDECHO" 0);_关闭命令提示
(Setvar "osmode" 0);_关闭捕捉
(if (setq ss (ssget '((0 . "circle"))))
(progn
(setqpt0 (getpoint "\n排列起始点"));可运行成功
(setq sk_gds(getdist "\n指定圆间距:"))
(or sk_gds (setq sk_gds 10))
(setq i 0)
(repeat (sslength ss)
(setq ss0 (ssname ss i)
en (entget ss0)
cen-10(cdr (assoc 10 en)) ;pt=圆心坐标
rad-40(cdr (assoc 40 en)) ;pt=圆半径
i (1+ i)
); (setq ss0
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
(setq pty(polar cen-10 0 rad-40));获得原来圆的右面点
(setq pt0(polar pt0 0 (+ (+ rad-40 rad-40) sk_gds)));设置新的右边点
;;;-=-=-=-=-=-=-=-=-=-=-=-=-=-=-算法更改=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
;;;;------------------------------------------------------------------
;;; (setqptz(polarpt0pirad-40 ) );圆左边点。
;;; (setqpty (polarptz0 (* rad-402)) );圆右边点。
;;; (setqpt0 pty );圆左边点赋值给pt0 。
;------------------------------------------------------------------
(command "move" ss0 "" pty pt0 ) ;command 我的cad2006 move后无需""结尾
); (repeat
)
)
(and o_cmd (setvar "CMDECHO" o_cmd));恢复更改的变量值
(and o_os (setvar "osmode" o_os));恢复更改的变量值
(princ)
) 增加13行 14行
更正32行command函数调用move的语句,我的cad2006无需""结尾
相对增加了全局变量名 sk_gds 默认是10,可以自己更改。
其他暂无调整 edata 发表于 2013-12-31 22:38 static/image/common/back.gif
增加13行 14行
更正32行command函数调用move的语句,我的cad2006无需""结尾
相对增加了全局变量名 sk_gd ...
谢谢再次指导。
页:
[1]