找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2232|回复: 11

[求助] 怎么实现选线去画矩形

[复制链接]
发表于 2013-5-5 09:10:57 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 rxing 于 2013-12-8 12:40 编辑

怎么实现选线去画矩形
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 51个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-5 16:48:37 | 显示全部楼层
本帖最后由 牢固 于 2013-5-5 20:07 编辑

[pcode=lisp,true];;动态画矩形 By Gu_x
(defun c:tt (/ E PT V1 P1 V2 P2 LOOP GR PERPT P3 P4 POLY ProjectPointToLine Ax:2DPoint)
  (defun ProjectPointToLine ( pt p1 p2 / norm )
  (setq norm (mapcar '- p2 p1)
        p1   (trans p1 0 norm)
        pt   (trans pt 0 norm)
  )
  (trans (list (car p1) (cadr p1) (caddr pt)) norm 0)
)
  (defun Ax:2DPoint (pt)
  (vlax-make-variant
    (vlax-safearray-fill
      (vlax-make-safearray vlax-vbdouble '(0 . 1))
      (list (car pt) (cadr pt))
    )
  )
)
  (vl-load-com)

  (while (or (not (setq e (entsel "\n选择多段线的边:")))
             (not (WCMATCH (cdr (assoc 0 (entget (car e)))) "*POLYLINE"))
             )
    (princ "\n选择的不是多段线!")
    )
    (setq pt (trans (cadr e) 1 0)
        e (car e)
        pt (vlax-curve-getclosestpointto e pt)
        v1 (fix (vlax-curve-getParamAtPoint e pt))
        p1 (vlax-curve-getPointAtParam e v1)
        v2 (1+ v1)
        p2 (vlax-curve-getPointAtParam e v2)
        loop t
        )
  (grdraw (trans p1 0 1) (trans p2 0 1) 1 -1)
  (while loop
    (setq gr (grread t 5))
    (if        (or (= 5 (car gr)) (= 3 (car gr)))
      (progn
        (setq pt (trans (cadr gr) 1 0))
        (setq perpt (ProjectPointToLine pt p1 p2)
              p3    (polar p2 (angle perpt pt) (distance perpt pt))
              p4    (polar p1 (angle perpt pt) (distance perpt pt))
        )
        (if Poly
          (progn
            (vla-put-coordinate poly 2 (AX:2DPOINT p3))
            (vla-put-coordinate poly 3 (AX:2DPOINT p4))
          )
          (progn
            (entmake
              (list '(0 . "lwpolyline")
                    '(100 . "AcDbEntity")
                    '(100 . "AcDbPolyline")
                    '(90 . 4)
                    '(70 . 1)
                    (cons 10 p1)
                    (cons 10 p2)
                    (cons 10 p3)
                    (cons 10 p4)
              )
            )
            (setq poly (vlax-ename->vla-object (entlast)))
          )
        )
        (if (= 3 (car gr)) (setq loop nil))
      )
    )
    )
  (princ)
    )
  [/pcode]

评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 技术引导讨论和指点奖!

查看全部评分

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-5 17:12:55 | 显示全部楼层

;(setq e (entsel "\n选择多段线的边:")
不光是多段线,连arc,circle,line,ellipse,spline全部都可以选,但是选择不同的物件,矩形的边长都不相同,搞不清楚有什么规律。

点评

代码已改进,只能选多段线!  发表于 2013-5-5 20:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-5 20:06:23 | 显示全部楼层
liuyun242 发表于 2013-5-5 19:33
我的怎么运行不正常

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

使用道具 举报

已领礼包: 3394个

财富等级: 富可敌国

发表于 2013-5-5 21:37:26 | 显示全部楼层
牢固 发表于 2013-5-5 20:06
修正了UCS下不正确的问题!请再试!

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2013-5-5 21:42:28 | 显示全部楼层
谢谢G版这么快就更新好了,但是测试一下,发现还是有些问题,必须要选中多段线,程式才可以运行下去,如果选不到物件或选到非多段线的物件时,程式会一直提示“选择的不是多段线!”,陷入死循环,空格和回车都不能正常退出,只能按ECS取消。希望能再优化一下,可以重复选取多段线;如果选择的不是多段线或者空集时,提示“选择的不是多段线!”或“未选到图元!”之后,按下回车程式能够正常退出。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-5-5 21:50:37 | 显示全部楼层
sicky111 发表于 2013-5-5 21:42
谢谢G版这么快就更新好了,但是测试一下,发现还是有些问题,必须要选中多段线,程式才可以运行下去,如果选 ...

这个你自己尝试修改一下!给个提示,可利用errno系统变量来设计一下!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 8710个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 5578个

财富等级: 富甲天下

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 09:17 , Processed in 0.354039 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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