醒玉 发表于 2006-3-18 12:07:00

求断线程序!!!

本帖最后由 作者 于 2006-3-20 10:15:52 编辑 <br /><br /> <P>小弟在使用CAD制图过程中,常常发现线与线之间的断线很头疼,一直想找一个好的方法解决这个问题,可惜遍求无门啊!后来有朋友介绍说,明经这里卧虎藏龙,说不定就有高手帮卧解决了呢!故而,小弟在此诚心求教!</P>
<P>小弟目前期望在断线时能满足以下要求:</P>
<P>&nbsp;1、&nbsp;a线与b线相交,要断a线时,使用“某命令”,在a线上(a线与b线交点两侧)任意拾取两点,输入断线间距(譬如300),断线后的效果是:断开线的长度为300,并且依原先a线与b线交点为中点;</P>
<P>2、使得该命令的间距值像OFFSET命令似的,只要该图没有关掉,下次执行该“某命令”时,上次输入的间距(譬如300),仍能默认,不需要每次使用都要输入间距值。</P>
<P>以上就是小弟的期望,如果各位大哥大姐还有更好的建议和帮助,小弟在这里一并感谢了!!!!</P>

醒玉 发表于 2006-3-20 10:15:00

这个程序比较难办么?还是没有高手看到?郁闷ING!

ljpnb 发表于 2006-3-20 16:24:00

是不是断成折线。这个程序论坛里,你搜索一下。

醒玉 发表于 2006-3-21 08:15:00

不是断成折线,而是断开,用BREAK 命令的那种!

yshf 发表于 2006-3-21 09:04:00

;;请试用以下程序
;;by yshf
(defun c:cc ()
(setq cm (getvar "cmdecho") om (getvar "osmode"))
(setqdd (getdist (strcat "\n请输入要断开的长度<"
      (rtos (getvar "userr1")) ">:"
       )
   )
)
(if dd (setvar "userr1" dd)(setq dd (getvar "userr1")))
(while (setq ent (car (entsel "\n请指定要被打断的线:")))
   (if (progn
   (setvar "osmode" 32)
   (setq pt (getpoint "\n请指定交点:"))
)
         (progn
   (setvar "osmode" 0)
   (command "_circle" pt (/ dd 2.0))(setq en1 (entlast))
   (command "_trim" (entlast) "" (list ent pt) "")
   (entdel en1)   
)
   )
)
(setvar "osmode" om)(setvar "cmdecho" cm)(princ)
)

醒玉 发表于 2006-3-21 12:56:00

谢谢楼上大哥热心帮助!小弟是新人,请问如何把上述程序下载下来转成程序文件??

醒玉 发表于 2006-3-21 13:05:00

是要所谓的源代码么??小弟汗颜的很,一窍不通啊!

醒玉 发表于 2006-3-21 13:56:00

<P>哦,搞定了,谢谢<A name=3859><FONT color=#000066><B>yshf</B></FONT></A>大哥</P>
<P>YSHF大哥的程序里面是先指定要断的线,后指定断开的点,如果能像BREAK命令那样随意在要断开的直线上取两点,自动以交点为中点断开300间距的空间就更符合我们的制图习惯了。不过YSHF大哥的程序基本上也满足要求了!</P>
<P>这里果然高手很多呀</P>

醒玉 发表于 2006-3-21 14:22:00

<P>单线与单线之间定间距断线问题基本解决了,如果许多条线与单条线a相交,能不能像TRIM 命令那样,输入“某命令”,确认后显示“输入断开间距(300)”,确认后显示“选择对象”-选取该单线a,确认后显示“选择要断开的线”,输入F,拉一直线选择所有要断开的线,确认后所有被选择的与a线相交的直线在与a线相交处断成间距为300的样子</P>
<P>这个程序的思路看起来像是和YSHF大哥前面的程序相反,YSHF大哥前面的程序是先选择要断开的线,后选择基准点,而现在这个程序的要求是先找基准线,再选择要断开的多条线。</P>
<P>请看到的大侠试试,谢谢!</P>

醒玉 发表于 2006-3-28 11:35:00

后面这个是不是很难呀??
页: [1] 2 3
查看完整版本: 求断线程序!!!