找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1749|回复: 10

[试用]:下午看到电小弟画图

[复制链接]
发表于 2008-1-8 23:37:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
下午看到电小弟画图,一段一段的打断交叉的电路线,问他为什么没有工具?应该很多吧,平时没注意收集;正好有点空,试着自己写一个,可以打断与多条线(*line、arc、circle等)相交的一条线。
胡乱写的,还是用break简单些,不过为了保险b了两次。看看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2008-1-9 00:08:10 | 显示全部楼层
源码。
小弟画图的断点间距取两侧各100,我也按照这样默认,做演示时输了200是为了看得清。
未加undo_bigin和end等。程序应该用循环,断点距离值在开始设,才算方便。
只是写着玩,建筑专业用不上,水电专业的兄弟应该已经写过无数版本了。以前也见过画圆再trim的作法。
以前也写过断点表排序的函数,这次用vlax的param来排序,函数也是临时凑的。
--不过这个函数看上去繁了,不紧凑,算法思路比较乱。
这个应该才是程序的要点,希望弟兄们讨论。
  
晚上网络似乎有问题,贴附件改了一下就有点不正常了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-9 00:33:32 | 显示全部楼层
希望弟兄们讨论断点表排序的问题:

(setq ddb'((1 4) (2.5 4) (3 6) (10 7) (20 30))
      ddb1(cy_ddb_hb ddb))
_$

((1 6.0) (7 10) (20 30))
_$
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-9 01:33:32 | 显示全部楼层
改完方便些了。编译为fas了,供使用的兄弟们下载。
  
发现批量选线,自己会剪自己,改了这个bug。
小兄弟试用发现漏了内部函数,现完全调好。
  
变成两个命令,加载时会提示命令名。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-3-1 22:35:40 | 显示全部楼层
用'> 对距离排序即可

  1. (defun c:xtr (/ A DTS E I INTS O OMS P1 P2 PTS SS X)
  2.   (princ "\n 退距打断---by lxx. 用 setxtr 改变打断距离")
  3.   (defun c:setxtr() ;; *xtr 全局
  4.     (setq *xtr (getdist "\n 打断距离<100>:"))
  5.     (if        (not *xtr)(setq *xtr 100))
  6.     *xtr
  7.   )
  8.   (if (not *xtr)(c:setxtr))
  9.   (princ "\n 当前打断距离:")(princ *xtr)
  10.   (if (and (setq e (car (entsel "\n 要打断的线:")))
  11.            (setq ss (ssget '((0 . "*LINE,ARC,ELLIPSE,CIRCLE"))))
  12.       )
  13.     (progn
  14.       (command ".undo" "be")
  15.       (setq oms (getvar "osmode"))
  16.       (setvar "osmode" 512)
  17.       (setq i -1
  18.             o (vlax-ename->vla-object e))
  19.       (while (setq a (ssname ss (setq i (1+ i))))
  20.         (if (eq a e)
  21.           nil
  22.           (progn
  23.             (setq ints (vlax-invoke o 'intersectwith (vlax-ename->vla-object a) acExtendNone))
  24.             (while ints
  25.                (setq pts  (cons (list (car ints) (cadr ints) (caddr ints)) pts)
  26.                      ints (cdddr ints)
  27.                )
  28.             )
  29.           )
  30.         )
  31.       )
  32.       (if pts
  33.         (progn
  34.          (setq dts (mapcar '(lambda (x) (vlax-curve-getdistatpoint o x)) pts))
  35.          (setq dts (vl-sort dts '>))
  36.          (mapcar '(lambda (x)
  37.                  (setq p1 (vlax-curve-getpointatdist e (- x *xtr))
  38.                        p2 (vlax-curve-getpointatdist e (+ x *xtr)))
  39.                  (if (not p1)(setq p2 (vlax-curve-getstartpoint e)))
  40.                  (if (not p2)(setq p2 (vlax-curve-getendpoint e)))
  41.                  (command ".break" (list e p1) p2)
  42.                )
  43.               dts
  44.          )
  45.         )
  46.       )
  47.       (setvar "osmode" oms)
  48.       (command ".undo" "e")
  49.     )
  50.   )
  51.   (princ)
  52. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-3-16 06:00:31 | 显示全部楼层
看起来不错,如果有需要其实在开始画线的时候可以自动断线的,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-3-16 20:01:22 | 显示全部楼层
我的学习深度还不够,这段程序还不能完全理解,今后还要向各位老大多多请教
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-17 12:42:18 | 显示全部楼层
箭刀兄弟,在我的程序中用了vlax-curve-getClosestPointTo保证点在线上 ,也许是cad的计算精度误差,不用的话有时会发生错误。我想你的也差不多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-17 12:54:57 | 显示全部楼层
在明经上的已更新,这里也发上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-4-13 11:34:43 | 显示全部楼层
我的学习深度还不
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-3-28 19:53:31 | 显示全部楼层
哎 下不了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-23 06:50 , Processed in 0.770505 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表