zero207发表于2004-11-21 23:56:0012楼的程序还需要进一步完善。 学过制图的网友很容易就能看出图中非常明显的错误,右侧三个圆(弧)的中心线应该相交在线段上,而不是相交在点上,左边的就对... 在线形比例一定的情况下,如果交点刚好在点上,我们是没法控制的,因为CAD是自动调整点和线的位置的,只有手画线才能保证所有的交点都不在点上。。。我给个代码吧,与12楼的差不多,不过我这里没有线型设置,是按当前情况绘制中心线,可以事先设定中心层再画。。。觉得好的就用,觉得不好,就当我没发过吧用法:将以下代码存为*.lsp文件,使用命令appload加载此文件- ;命令:Center
- ;功能:画圆中心线,长出圆半径1/3.(defun c:center (/ ss i j ent ents ptc r pts os)
- (setq ss (ssget '((0 . "CIRCLE"))))
- (setq i 0)
- (command "_.undo" "be")
- (setvar "cmdecho" 0)
- (setq os (getvar "osmode"))
- (setvar "osmode" 0)
-
- (repeat (sslength ss)
- (setq ent (ssname ss i))
- (setq ents (entget ent))
- (setq ptc (cdr (assoc 10 ents))
- r (cdr (assoc 40 ents))
- j 0
- pts '()
- )
- (repeat 4
- (setq pts
- (append pts (list (polar ptc (* j (/ pi 2)) (+ r (/ r 3)))))
- )
- (setq j (1+ j))
- )
- (command "_.line"
- (nth 0 pts)
- (nth 2 pts)
- ""
- "_.line"
- (nth 1 pts)
- (nth 3 pts)
- ""
- )
- (setq i (1+ i))
- )
- (command "_.undo" "e")
- (setvar "osmode" os)
- (princ)
- )
|