再次绘制圆
嗨,亲爱的朋友。看:
1步。拾取一条线(或多段线),输入偏移距离。
2步骤。拾取一条线(或多段线),输入偏移距离。
3步骤。用中心线画一个圆,中心线的图层名为“cen”
4步骤。选择内部或外部
非常感谢! 我们不是刚写了那个程序吗?
http://www.cadtutor.net/forum/showthread.php?88556-用多边形绘制圆
很抱歉李
我刚刚测试了你的代码,很好!非常感谢!!!
你能帮我处理这条线吗。再次感谢。 我看不出这条线和前一条有什么不同? 我猜OP想要的是“选择一个角落”并单独为那个角落创建“thingy”。等等,我可能错了
塔尔瓦特。这是不同的。
不一定是闭合对象,也不一定是多边形。
偏移距离不同。(d1和d2),
需要两个选择,(选择1和选择2) 这只是画一个圆。绘制完成时。不要退出。可以画下一个。直到按下“ESC”键。 试试这个阿尔贝托,让我知道。
(defun c:Test (/ _line _screw s1 s2 l a p)
;; Author: Tharwat ;;
;; Date: 09.09.2014 ;;
(defun _line (p q)
(entmakex (list '(0 . "LINE") (cons 8 "cen") (cons 62 4) (cons 10 p) (cons 11 q)))
)
(defun _screw (pt r)
(mapcar '(lambda (p)
(entmakex (list '(0 . "CIRCLE") (cons 10 p) (cons 40 r)))
(_line (polar p 0. (* r 1.2)) (polar p pi (* r 1.2)))
(_line (polar p (* pi 1.5) (* r 1.2)) (polar p (* pi 0.5) (* r 1.2)))
)
(list pt)
)
)
(while (and (setq s1 (entsel "\n Pick Left side line :"))
(wcmatch (cdr (assoc 0 (entget (car s1)))) "LINE,LWPOLYLINE")
(setq s2 (entsel "\n Pick Right side line :"))
(wcmatch (cdr (assoc 0 (entget (car s2)))) "LINE,LWPOLYLINE")
(setq p (getpoint "\n Specify Corner point of the two side :"))
(setq *dist1* (cond ((getdist (strcat "\n Specify Left distance < "
(rtos (if *dist1*
*dist1*
(setq *dist1* 1.0)
)
2
2
)
" > :"
)
)
)
(*dist1*)
)
)
(setq *dist2* (cond ((getdist (strcat "\n Specify Right distance < "
(rtos (if *dist2*
*dist2*
(setq *dist2* 1.0)
)
2
2
)
" > :"
)
)
)
(*dist2*)
)
)
(setq *rad* (cond ((getdist (strcat "\n Diameter of Circle < "
(rtos (if *rad*
*rad*
(setq *rad* 1.0)
)
2
2
)
" > :"
)
)
)
(*rad*)
)
)
)
(progn (setq l (mapcar 'vlax-curve-getclosestpointto (list (car s1) (car s2)) (list (cadr s1) (cadr s2)))
a (mapcar 'angle (list p p) (list (car l) (cadr l)))
)
(_screw (polar (polar p (car a) *dist2*) (cadr a) *dist1*) (/ *rad* 2.))
)
)
(princ)
)(vl-load-com)
非常感谢!塔尔瓦特。
我很抱歉!很抱歉我没说清楚。
我想按常规输入圆的半径,而不是固定值。
没问题,我修改了常规,试着让我知道。
注意:如果你想取消程序的进程,只需点击回车键或空格键,这比Esc键要好,以避免出现错误消息。
页:
[1]
2