找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: ymcui2005

[求助] 点选直线靠角点的边得出对角点

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-9-5 07:22:03 来自手机 | 显示全部楼层
还是向量运算简便

点评

主要是清晰,涉及到方向的,向量都简洁。  详情 回复 发表于 2014-9-5 08:17
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-5 08:17:01 | 显示全部楼层
csharp 发表于 2014-9-5 07:22
还是向量运算简便

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

使用道具 举报

已领礼包: 106个

财富等级: 日进斗金

 楼主| 发表于 2014-9-5 08:58:15 | 显示全部楼层

zxq0220 老大的程序简单对我比较实用,
现在还有一个问题是右下角红色框会跑出外面能否修改。谢谢

12.jpg

点评

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

使用道具 举报

已领礼包: 106个

财富等级: 日进斗金

 楼主| 发表于 2014-9-5 09:00:35 | 显示全部楼层
newer 发表于 2014-9-4 22:55
来个API 版本的,主要是用向量判断方向,保存默认值的。

错误: no function definition: XDRX_ENTSEL

点评

点我签名,下载XDRX_API和晓东LISP函数库加载。  详情 回复 发表于 2014-9-5 11:09
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-9-5 11:09:59 | 显示全部楼层
ymcui2005 发表于 2014-9-5 09:00
错误: no function definition: XDRX_ENTSEL

点我签名,下载XDRX_API和晓东LISP函数库加载。

点评

XD:olylie:NearIndex 和 XD:olyline:-Index+ 还有 Bug 前者在闭合曲线靠近 0 但不是 0-1区间时不对,后者在非闭合 pline 时没有判断  详情 回复 发表于 2014-9-5 18:25
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2014-9-5 18:25:00 | 显示全部楼层
本帖最后由 Free-Lancer 于 2014-9-5 18:31 编辑
XDSoft 发表于 2014-9-5 11:09
点我签名,下载XDRX_API和晓东LISP函数库加载。

XD::Polylie:NearIndex 和 XD::Polyline:-Index+ 还有 Bug

前者在闭合曲线靠近 0 但不是 0-1区间时不对,后者在非闭合 pline 时没有判断
重新改的
  1. (if (not $rectang_wid)
  2.   (setq $rectang_wid 12.)
  3. )
  4. (if (not $rectang_hig)
  5.   (setq $rectang_hig 5)
  6. )
  7. (defun c:tt (/ dcl fn id lst wid hig bp        e p p1 p2 p3 pams index        v vw vh
  8.              vd        v1 v2)
  9.   (defun Checkin (kl)
  10.     (mapcar '(lambda (x)
  11.                (action_tile
  12.                  x
  13.                  (strcat "(dcl:checkin $value \"数字\" \"" x "\"" ")")
  14.                )
  15.              )
  16.             kl
  17.     )
  18.   )
  19.   (setq        dcl '("temp:dialog {                      "
  20.               "    label = \"参数输入\" ;     "
  21.               "    :column {                  "
  22.               "        :edit_box {            "
  23.               "            key = \"wid\" ;    "
  24.               "            label = \"宽度\" ; "
  25.               "        }                      "
  26.               "        :edit_box {            "
  27.               "            key = \"hig\" ;    "
  28.               "            label = \"高度\" ; "
  29.               "        }                      "
  30.               "    }                          "
  31.               "    ok_only;                   "
  32.               "    errtile;                   "
  33.               "}                              "
  34.              )

  35.   )
  36.   (setq        fn (dcl:make dcl)
  37.         id (dcl:load fn "temp")
  38.   )
  39.   (dcl:settile
  40.     '("wid" "hig")
  41.     (mapcar 'vl-princ-to-string
  42.             (list $rectang_wid $rectang_hig)
  43.     )
  44.   )
  45.   (checkin '("wid" "hig"))
  46.   (action_tile
  47.     "accept"
  48.     "(setq lst (dcl:gettile '(\"wid\" \"hig\")))(done_dialog)"
  49.   )
  50.   (dcl:start id fn)
  51.   (if (not (member "" lst))
  52.     (progn
  53.       (mapcar 'set
  54.               '($rectang_wid $rectang_hig)
  55.               (mapcar 'distof lst)
  56.       )
  57.       (while
  58.         (and
  59.           (setq        e
  60.                  (xdrx_entsel "\n拾取多义线转角处: " '((0 . "LWPOLYLINE")))
  61.           )
  62.           (setq        p     (apply 'xdrx_curve_getclosestpoint e)

  63.                 index (apply 'xd::polyline:nearindex e)
  64.                 e     (car e)
  65.                 bp    (xdrx_curve_getpointatparam e index)
  66.           )
  67.           (or (vlax-curve-isclosed e)
  68.               (and (not (vlax-curve-isclosed e))
  69.                    (/= index (vlax-curve-getstartparam e))
  70.                    (/= index (vlax-curve-getendparam e))
  71.               )
  72.           )
  73.           (setq pams (XD::PolyLine:-Index+ e index))
  74.           (vl-every 'zerop
  75.                     (mapcar '(lambda (x)
  76.                                (xdrx_polyline_getbulgeat e x)
  77.                              )
  78.                             (list (car pams) index)
  79.                     )
  80.           )
  81.         )
  82.          (setq v  (xdrx_vector_normalize (mapcar '- p bp))
  83.                v1 (xdrx_vector_normalize
  84.                     (mapcar '-
  85.                             (xdrx_curve_getpointatparam e (car pams))
  86.                             bp
  87.                     )
  88.                   )
  89.                v2 (xdrx_vector_normalize
  90.                     (mapcar '-
  91.                             (xdrx_curve_getpointatparam e (cadr pams))
  92.                             bp
  93.                     )
  94.                   )
  95.          )
  96.          (if (equal v v1 1e-3)
  97.            (setq vw (xdrx_vector_product v $rectang_wid)
  98.                  vh (xdrx_vector_product v2 $rectang_hig)
  99.                  vd (mapcar '+ vw vh)
  100.                  p1 (mapcar '+ bp vw)
  101.                  p2 (mapcar '+ bp vh)
  102.                  p3 (mapcar '+ bp vd)
  103.            )
  104.            (setq vw (xdrx_vector_product v2 $rectang_wid)
  105.                  vh (xdrx_vector_product v1 $rectang_hig)
  106.                  vd (mapcar '+ vw vh)
  107.                  p1 (mapcar '+ bp vw)
  108.                  p2 (mapcar '+ bp vh)
  109.                  p3 (mapcar '+ bp vd)
  110.            )
  111.          )
  112.          (apply 'xdrx_polyline_make (cons t (list bp p1 p3 p2)))
  113.       )
  114.     )
  115.   )
  116.   (princ)
  117. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9814个

财富等级: 富甲天下

发表于 2014-9-5 20:41:58 | 显示全部楼层
ymcui2005 发表于 2014-9-5 08:58
zxq0220 老大的程序简单对我比较实用,
现在还有一个问题是右下角红色框会跑出外面能否修改。谢谢

13楼已改,再试试

点评

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

使用道具 举报

已领礼包: 106个

财富等级: 日进斗金

 楼主| 发表于 2014-9-9 08:16:47 | 显示全部楼层
zxq0220 发表于 2014-9-5 20:41
13楼已改,再试试

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 05:08 , Processed in 0.263184 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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