fire9527 发表于 2013-1-6 22:24:34

申请一个框选定位圆的程序

本帖最后由 fire9527 于 2013-1-11 17:46 编辑

有很多蓝色的圆位置不规范,需要将它们的位置调整到距离某些直线指定的距离,请高手们帮帮忙,小生万分感激!
附件已经更新

ZZXXQQ 发表于 2013-1-6 22:24:35

本帖最后由 ZZXXQQ 于 2013-1-13 17:50 编辑

写了个单选的,要对齐两条线就多选一次。

(defun c:bs ()
(setvar "CMDECHO" 0)
(while (and (princ "\n选择圆 :") (setq ss (ssget ":E:S" '((0 . "CIRCLE")))))
(setq en (ssname ss 0)
      ent (entget en)
      pc (cdr(assoc 10 ent)))
(if (setq s1 (entsel "\n选择边线1 :")) (progn
   (setq p1 (cadr s1))
   (setq p2 (osnap p1 "NEAR"))
   (setq p3 (polar pc (angle p1 p2) 200))
   (setq p4 (polar p2 (+ (angle p1 p2) (/ pi 2)) 200))
   (setq pt5 (inters p4 p2 pc p3 nil))
   (setq pc (polar pt5 (angle pt5 pc) 200))
   (entmod (setq ent (subst (cons 10 pc) (assoc 10 ent) ent)))
))
(if (setq s1 (entsel "\n选择边线2 :")) (progn
   (setq p1 (cadr s1))
   (setq p2 (osnap p1 "NEAR"))
   (setq p3 (polar pc (angle p1 p2) 200))
   (setq p4 (polar p2 (+ (angle p1 p2) (/ pi 2)) 200))
   (setq pt5 (inters p4 p2 pc p3 nil))
   (setq pc (polar pt5 (angle pt5 pc) 200))
   (entmod (subst (cons 10 pc) (assoc 10 ent) ent))
))
)
(setvar "CMDECHO" 1)
(princ)
)

天意今天 发表于 2013-1-10 09:36:36

某些直线指定的距离好难玩

fire9527 发表于 2013-1-11 17:48:54

ZZXXQQ 发表于 2013-1-10 22:14 static/image/common/back.gif
写了个单选的,要对齐两条线就多选一次。


谢谢这位朋友的回复,要是操作很多的话还是不太方便,附件已经更新,看看这样程序是不是好编一些,希望再次得到您的帮助,谢谢!

fire9527 发表于 2013-1-12 22:09:18

这个要给高手端上来!

cable2004 发表于 2013-1-12 23:06:18

本帖最后由 cable2004 于 2013-1-13 18:20 编辑

fire9527 发表于 2013-1-13 12:35:26

cable2004 发表于 2013-1-12 23:06 static/image/common/back.gif
[

非常感谢!对于边界线为line的情况已经能很好的满足了,比我之前想到的还要好!能不能让程序对闭合多义线也管用呢?

cable2004 发表于 2013-1-13 12:44:03

闭合多段线形式太多,判断基准不清,应该很复杂了。

fire9527 发表于 2013-1-13 12:56:37

cable2004 发表于 2013-1-13 12:44 static/image/common/back.gif
闭合多段线形式太多,判断基准不清,应该很复杂了。

朋友ZZXXQQ3楼的程序能单次选择多义线某条边,可惜不能连续选择第二条边,你可以参考一下吗?如果选边不好选选交点也可以,另外那个200的距离设为默认,留个可以自定义的余地(自定义这一步要输入关键字才进入,即操作步骤希望不要比之前的多) ,呵呵,希望朋友能继续帮助我

cable2004 发表于 2013-1-13 13:56:24

本帖最后由 cable2004 于 2013-1-13 18:21 编辑

页: [1] 2
查看完整版本: 申请一个框选定位圆的程序