找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2368|回复: 23

画正交线(第二版)

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-8-28 12:05:05 | 显示全部楼层 |阅读模式
  • 插件名称 : 画正交线
  • 作  者 : newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2018-08-28
  • 命令名称 :XDTB_DrawOrthoLine
  • 插件介绍 :画正交线(第二版)
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

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

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

×
根据网友的申请,先确定一个边,然后一直正交画线,
中间可以设置轴、线宽、颜色、回退

相对第一版,增加了线宽和颜色的设置


  1. (defun c:XDTB_DrawOrthoLine (/ clr el g in int len p1 p2 pa2 pt1 pt2 pts tf v1 vec vec1 m_pl_ent
  2.                             )
  3.   (defun *error* (msg)
  4.         (princ msg)
  5.          (xdrx_entity_delete m_pl_ent)
  6.         (redraw)
  7.          (setq *error* nil)
  8.         (xdrx_end)
  9.   )
  10.   (defun _jsvec ()
  11.     (xdrx_vector_normalize
  12.       (mapcar '- (car (reverse pts)) (cadr (reverse pts)))
  13.     )
  14.   )
  15.   (defun _hasclose ()
  16.     (if (> (length pts) 1)
  17.       "[设置轴(A)/线宽(W)/颜色(S)/闭合(C)/回退(U)]"
  18.       ""
  19.     )
  20.   )
  21.   (defun _callback (dynpt)
  22.     (xdrx_grdraw xd_var_global_ent_color 0 pts)
  23.     (xdrx_setpropertyvalue
  24.       m_pl_ent "set" pts "constantwidth" #xd_var_global_lw_width "color" xd_var_global_ent_color
  25.      )
  26.     (xdrx_draworder->top m_pl_ent)
  27.   )
  28.   (defun _getp2 (p1 / p2 tf)
  29.     (setq tf t)
  30.     (while (and tf
  31.                 (xdrx_initget "W S")
  32.                 (setq p2 (getpoint p1 "\n下一点[线宽(W)/颜色(S)]<退出>:"))
  33.            )
  34.       (cond ((= p2 "W")
  35.              (if (setq w (getreal
  36.                            (xdrx_prompt "\n输入线宽<" #xd_var_global_lw_width ">:" t)
  37.                          )
  38.                  )
  39.                (setq #xd_var_global_lw_width w)
  40.              )
  41.             )
  42.             ((= p2 "S")
  43.              (setq xd_var_global_ent_color (acad_colordlg 256))
  44.             )
  45.             ((= (type p2) 'LIST) (setq tf nil))
  46.       )
  47.     )
  48.     p2
  49.   )
  50.   (xdrx_begin)
  51.   (xdrx_sysvar_push '("osmode" 35) '("orthomode" 0))
  52.   (if (not xd_var_global_ent_color)
  53.     (setq xd_var_global_ent_color 7)
  54.   )
  55.   (if (not #xd_var_global_lw_width)
  56.     (setq #xd_var_global_lw_width 1.0)
  57.   )
  58.   (if (and (setq p1 (getpoint "\n起点<退出>:"))
  59.            (setvar "lastpoint" p1)
  60.            (setq p2 (_getp2 p1))
  61.       )
  62.     (progn
  63.       (xdrx_begin)
  64.       (xdrx_sysvar_push '("orthomode" 1))
  65.       (setq pts (list (trans p1 1 0) (trans p2 1 0))
  66.             vec (_jsvec)
  67.             v1  vec
  68.             tf  t
  69.       )
  70.       (setq m_pl_ent (xdrx_polyline_make (xd::pnts:ucs2wcs pts)))
  71.       (if (<= xd_var_global_ent_color 0)
  72.         (setq xd_var_global_ent_color 7)
  73.       )
  74.       (XD::SYMBOL:Put '#XD-GLOBALVAR-DRAG-FREEORTHO 1)
  75.       (while (and tf
  76.                   (if (/= (_hasclose) "")
  77.                     (progn (initget "A C U W S") (xdrx_initget "A C U W S"))
  78.                     t
  79.                   )
  80.                   (setq p2 (xd::drag:gmove
  81.                              p2
  82.                              (xdrx_prompt
  83.                                "\r                                  \r下一点"
  84.                                (_hasclose)
  85.                                "<退出>:"
  86.                                t
  87.                              )
  88.                              (- xd_var_global_ent_color)
  89.                              vec
  90.                              t
  91.                              "_callback"
  92.                            )
  93.                   )
  94.              )
  95.         (cond ((= p2 "U")
  96.                (if (= (length pts) 2)
  97.                  (xdrx_prompt "\n已经完成所有回退.\n")
  98.                  (setq pts (xd::list:removeTail pts))
  99.                )
  100.                (xdrx_grdraw xd_var_global_ent_color 0 pts)
  101.               )
  102.               ((= p2 "C") (setq tf nil))
  103.               ((= p2 "W")
  104.                (if (setq w (getreal
  105.                              (xdrx_prompt "\n输入线宽<" #xd_var_global_lw_width ">:" t)
  106.                            )
  107.                    )
  108.                  (setq #xd_var_global_lw_width w)
  109.                )
  110.               )
  111.               ((= p2 "S")
  112.                (setq xd_var_global_ent_color (acad_colordlg 256))
  113.               )
  114.               ((= p2 "A")
  115.                (xdrx_grdraw xd_var_global_ent_color 0 pts)
  116.                (if (and (setq pt1 (getpoint "\n新轴第一点<退出>:"))
  117.                         (setq pt2 (getpoint pt1 "\n新轴第二点<退出>:"))
  118.                    )
  119.                  (setq vec (xdrx_vector_normalize (mapcar '- pt2 pt1)))
  120.                )
  121.               )
  122.               (t (setq pts (append pts (list (trans p2 1 0)))))
  123.         )
  124.         (setq vec1 (_jsvec)
  125.               p2   (trans (last pts) 0 1)
  126.         )
  127.       )
  128.       (if (> (length pts) 1)
  129.         (progn (if (not tf)
  130.                  (progn
  131.                    (if (= (getvar "orthomode") 1)
  132.                      (progn (setq g  (xdge::constructor "kCompositecrv3d" pts)
  133.                                   in (xdge::getpropertyvalue g "getinterval" t)
  134.                             )
  135.                             (if (xdrx_vector_IsPerpendicular v1 vec1)
  136.                               (progn (setq int (xd::pnts:orthoproject
  137.                                                  (list (car pts))
  138.                                                  (last pts)
  139.                                                  (nth (- (length pts) 2) pts)
  140.                                                )
  141.                                      )
  142.                               )
  143.                               (progn
  144.                                 (setq int (xd::pnts:orthoproject
  145.                                             (list (car pts))
  146.                                             (last pts)
  147.                                             (mapcar '+ (last pts) (xdrx_vector_perpvector v1))
  148.                                           )
  149.                                 )
  150.                               )
  151.                             )
  152.                             (setq len (distance (car int) (car pts)))
  153.                             (setq el (xdge::getpropertyvalue g "getcurvelist"))
  154.                             (if (not (xdge::getpropertyvalue (car el) "ison" (car int)))
  155.                               (setq len (- len))
  156.                             )
  157.                             (if (xdge::getpropertyvalue (last el) "ison" (car int))
  158.                               (setq pa2 (- (last in)
  159.                                            (distance (car int)
  160.                                                      (xdge::getpropertyvalue (last el) "hasstartpoint")
  161.                                            )
  162.                                         )
  163.                               )
  164.                               (setq pa2 (last in))
  165.                             )
  166.                             (xdge::setpropertyvalue g "setinterval" len pa2)
  167.                             (xdge::entity:make g)
  168.                             (xdrx_setpropertyvalue (entlast) "isclosed" t)
  169.                             (xdrx_entity_matchprop m_pl_ent (entlast))
  170.                             (xdrx_entity_delete m_pl_ent)
  171.                             (setq m_pl_ent (entlast))
  172.                      )
  173.                      (xdrx_setpropertyvalue m_pl_ent "isclosed" t)
  174.                    )
  175.                  )
  176.                )
  177.                (xdrx_polyline_compress m_pl_ent t)
  178.         )
  179.       )
  180.     )
  181.   )
  182.   (xdrx_sysvar_pop)
  183.   (setq *error* nil)
  184.   (xdrx_end)
  185.   (princ)
  186. )


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

已领礼包: 4803个

财富等级: 富可敌国

发表于 2018-8-28 16:29:14 | 显示全部楼层
在AUTOCAD2018X64下,不能连续绘制,什么原因?

点评

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

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2018-8-28 12:41:51 | 显示全部楼层
你好版主!显示语法错误。

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-8-28 13:18:55 | 显示全部楼层
xudongchu 发表于 2018-8-28 12:41
你好版主!显示语法错误。

重新拷贝下,试试

点评

已经OK了 谢谢 是不是又重新修改了?我之前搞了三次都不行。  详情 回复 发表于 2018-8-28 13:35
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 24个

财富等级: 恭喜发财

发表于 2018-8-28 13:35:26 | 显示全部楼层
newer 发表于 2018-8-28 13:18
重新拷贝下,试试

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-8-28 17:07:24 | 显示全部楼层
scnjlwb 发表于 2018-8-28 16:29
在AUTOCAD2018X64下,不能连续绘制,什么原因?

2019下

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

使用道具 举报

已领礼包: 4803个

财富等级: 富可敌国

发表于 2018-8-28 17:40:14 | 显示全部楼层
问题没有解决,只是鼠标点取的第一点与第二点能生成多段线,之后的不行。

点评

2018下 [attachimg]79777[/attachimg] 你是怎么加载的呢? 保存成LISP文件,APPLOAD它,或者拷贝代码直接到命令行。 别在VLISP里面加载。  详情 回复 发表于 2018-8-28 18:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-8-28 18:19:44 | 显示全部楼层
scnjlwb 发表于 2018-8-28 17:40
问题没有解决,只是鼠标点取的第一点与第二点能生成多段线,之后的不行。

2018下
画正交线-2018.gif

你是怎么加载的呢? 保存成LISP文件,APPLOAD它,或者拷贝代码直接到命令行。 别在VLISP里面加载。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2107个

财富等级: 金玉满堂

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

使用道具 举报

已领礼包: 100个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 6056个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 6434个

财富等级: 富甲天下

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

使用道具 举报

已领礼包: 4803个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 3534个

财富等级: 富可敌国

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

使用道具 举报

已领礼包: 49个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 05:12 , Processed in 0.528264 second(s), 62 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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