找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4123|回复: 19

[曲线] (XD::Curve:NumDiv)曲线定距或定数分割点

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-30 08:12:32 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Curve:NumDiv
调用格式: (XD::Curve:NumDiv cv firstPnt secondPnt div)
参数说明: Cv --- 曲线
firstPnt --- 起点, nil 为整条曲线的 startpoint
secondPnt --- 终点. nil 为整条曲线的 endpoint
div --- 整数,等分
--- 实数. 等距离
--- (int) 等分闭合线跨越起点部分
--- (real) 等距
返回值: 表((p1 v1) (p2 v2) ...) 相应点及改点处切线单位矢量
函数简介: 曲线定距或定数分割点
函数来源: 原创
函数作者: st788796
适用版本: XDRX API 
最后更新时间: 2014-09-30
备注: (XD::Curve:NumDiv e nil nil 10) 曲线10等分
(XD::Curve:NumDiv e nil nil 10.0) 曲线按 10.0 间距分割
(XD::Curve:NumDiv e p1 p2 10) 曲线在 p1 - p2 区间 10 等分
(XD::Curve:NumDiv e p1 p2 10.0) 曲线在 p1 - p2 区间以 10.0 距离分割
(XD::Curve:NumDiv e p1 p2 \\\\\\\\\\\\\\\'(10)) 曲线在 p1 - p2 区间(闭合线包含起点一侧) 10 等分
(XD::Curve:NumDiv e p1 p2 10.0) 曲线在 p1 - p2 区间(闭合线包含起点一侧)以 10.0 距离分割
演示图片: -

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

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

×
本帖最后由 st788796 于 2014-10-1 23:19 编辑

  1. (defun XD::Curve:NumDiv        (curve startPnt endPnt lst / spam epam params)
  2.   (setq        spam (if startPnt
  3.                (xdrx_curve_getdistatpoint curve startPnt)
  4.                0.0
  5.              )
  6.         epam (if endPnt
  7.                (xdrx_curve_getdistatpoint curve endPnt)
  8.                (xdrx_curve_getdistatparam
  9.                  curve
  10.                  (xdrx_curve_getendparam curve)
  11.                )
  12.              )
  13.   )
  14.   (if (eq (type lst) 'LIST)
  15.     (setq lst (cons (xdrx_curve_getdistatparam
  16.                       curve
  17.                       (xdrx_curve_getendparam curve)
  18.                     )
  19.                     lst
  20.               )
  21.     )
  22.   )
  23.   (setq params (XD::Geom:NumDiv epam spam lst))
  24.   (mapcar
  25.     '(lambda (x)
  26.        (list (xdrx_curve_getpointatdist curve x)
  27.              (xdrx_vector_normalize (xdrx_curve_getfirstderiv curve (xdrx_curve_getparamatdist curve x)))
  28.        )
  29.      )
  30.     params
  31.   )
  32. )
div.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-9-30 11:24:14 | 显示全部楼层

收录,Lisp 就这样
  1. (defun XD::Curve:NumDiv        (curve startPnt endPnt lst / spam epam params)
  2.   (setq        spam (if startPnt
  3.                (vlax-curve-getparamatpoint curve startPnt)
  4.                (vlax-curve-getstartparam curve)
  5.              )
  6.         epam (if endPnt
  7.                (vlax-curve-getparamatpoint curve endPnt)
  8.                (vlax-curve-getendparam curve)
  9.              )
  10.   )
  11.   (if (eq (type lst) 'LIST)
  12.     (setq lst (cons (vlax-curve-getendparam curve) lst))
  13.   )
  14.   (setq params (XD::Geom:NumDiv epam spam lst))
  15.   (mapcar
  16.     '(lambda (x / ve len)
  17.        (setq ve         (vlax-curve-getfirstderiv curve x)
  18.              len (distance '(0. 0. 0.) ve)
  19.        )
  20.        (list (vlax-curve-getpointatparam curve x)
  21.              (if (zerop len)
  22.                ve
  23.                (mapcar '(lambda (x) (/ x len))
  24.                        ve
  25.                )
  26.              )
  27.        )
  28.      )
  29.     params
  30.   )
  31. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-27 20:06:37 | 显示全部楼层

求直线的交点

  1. (setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))
  2.   (xdrx_polyline_SetConstantWidth jxk *bl)
  3.   (XD::Curve:NumDiv jxk pt pt5 8)
  4.   (XD::Curve:NumDiv jxk pt5 pt6 10)
  5.   (XD::Curve:NumDiv jxk pt6 pt7 8)
  6.   (XD::Curve:NumDiv jxk pt7 pt 10)
想等分矩形画线。 (XD::Curve:NumDiv jxk pt pt5 8)参数类型错误
QQ截图20141127200337.png

点评

把你所有的代码都贴上来吧,你这半途的代码,也许别的地方错了。  详情 回复 发表于 2014-11-27 20:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-27 20:45:21 | 显示全部楼层
zhangq_cai1 发表于 2014-11-27 20:06
想等分矩形画线。 (XD::Curve:NumDiv jxk pt pt5 8)参数类型错误

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-27 20:58:37 | 显示全部楼层
  1. (defun c:tt ()
  2.         (XD::Begin)
  3.   (setq        strl   '("crtk:dialog{label="插入图框";"
  4.                  "initial_focus="a2";"
  5.                  "\n :boxed_column{label="图幅";"
  6.                  "\n :row{"
  7.                  "\n :boxed_radio_column{"
  8.                  "\n :radio_button{label="A0";key="a0";}"                       
  9.                  "\n :radio_button{label="A1";key="a1";}"
  10.                  "\n :radio_button{label="A2";key="a2";value=1;}"
  11.                  "\n :radio_button{label="A3";key="a3";}"
  12.                  "\n :radio_button{label="A4";key="a4";}}"
  13.                  "\n :column{"
  14.                  "\n :radio_row{"
  15.                  "\n :radio_button{label="横式";key="lev";value=1;}"
  16.                  "\n :radio_button{label="立式";key="ver";}}"
  17.                  "\n :edit_box {label="图长:";key="drl";width=10;}"
  18.                  "\n :edit_box {label="图宽:";key="drw";width=10;}"
  19.                  "\n :popup_list {label="加长:";key="dl_list";}}"
  20.                  "}}"                       
  21.                  "ok_cancel;}"
  22.      )
  23.                         fn     (xd::dcl:make strl)
  24.                 dcl_id (load_dialog fn)
  25.   )
  26.   (if (not (new_dialog "crtk" dcl_id))
  27.     (exit)
  28.   )
  29.         (action_tile "a0" "(setq ll 1189 hh 841)")
  30.         (action_tile "a1" "(setq ll 841 hh 594)")
  31.   (action_tile "a2" "(setq ll 594 hh 420)")
  32.   (action_tile "a3" "(setq ll 420 hh 297)")
  33.         (action_tile "a4" "(setq ll 297 hh 210)")
  34.   (action_tile "accept" "(setq h_v (get_tile "ver"))(done_dialog 1)")
  35.   (action_tile "cancel" "(done_dialog)")
  36.   (setq std (start_dialog))
  37.   (unload_dialog dcl_id)
  38.   (vl-file-delete fn)
  39.         (if (= h_v "1") (setq ww ll ll hh hh ww))
  40.         (if (> std 0) (htk))
  41.         (XD::End)
  42.   (princ)
  43. )
  44. (defun htk ()
  45.         (setq pt  (getpoint "\n插入点:")
  46.                     pt1 (list (+(car pt) (* 5 *bl)) (-(cadr pt) (* 5 *bl)))
  47.                     pt2 (list (car pt1) (+(cadr pt1) (* hh *bl)))
  48.                                 pt3 (list (-(car pt1)(* ll *bl)) (+(cadr pt1) (* hh *bl)))
  49.                     pt4 (list (-(car pt1)(* ll *bl)) (cadr pt1))
  50.                     pt5 (list (car pt) (+(cadr pt) (*(- hh 10) *bl)) 0)
  51.                     pt6 (list (-(car pt)(*(- ll 30) *bl)) (+(cadr pt) (*(- hh 10) *bl)))
  52.                     pt7 (list (-(car pt)(*(- ll 30) *bl)) (cadr pt))
  53.                     pt8 (list (-(car pt1)(*(- ll 20) *bl)) (cadr pt1))
  54.                     pt9 (list (-(car pt1)(*(- ll 20) *bl)) (+(cadr pt1) (* hh *bl)))
  55.         )
  56.   (xdrx_polyline_make t pt1 pt2 pt3 pt4)
  57.         (setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))
  58.         (xdrx_polyline_SetConstantWidth jxk *bl)
  59.         (XD::Curve:NumDiv jxk pt pt5 8)
  60.         (XD::Curve:NumDiv jxk pt5 pt6 10)
  61.         (XD::Curve:NumDiv jxk pt6 pt7 8)
  62.         (XD::Curve:NumDiv jxk pt7 pt 10)
  63.         (xdrx_line_make pt8 pt9)
  64. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 07:50:32 | 显示全部楼层

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 08:20:28 | 显示全部楼层
zhangq_cai1 发表于 2014-11-28 08:12
后面加0.0改成3D的也出错~~~~~~~~~~~~~~~~~~~~

用 3D 点没问题
  1. (defun htk ()
  2.   (setq        pt  (getpoint "\n插入点:")
  3.         pt1 (list (+ (car pt) (* 5 *bl)) (- (cadr pt) (* 5 *bl)))
  4.         pt2 (list (car pt1) (+ (cadr pt1) (* hh *bl)))
  5.         pt3 (list (- (car pt1) (* ll *bl)) (+ (cadr pt1) (* hh *bl)))
  6.         pt4 (list (- (car pt1) (* ll *bl)) (cadr pt1))
  7.         pt5 (list (car pt) (+ (cadr pt) (* (- hh 10) *bl)) 0.)
  8.         pt6 (list (- (car pt) (* (- ll 30) *bl))
  9.                   (+ (cadr pt) (* (- hh 10) *bl))
  10.                   0.0
  11.             )
  12.         pt7 (list (- (car pt) (* (- ll 30) *bl)) (cadr pt) 0.0)
  13.         pt8 (list (- (car pt1) (* (- ll 20) *bl)) (cadr pt1) 0.0)
  14.         pt9 (list (- (car pt1) (* (- ll 20) *bl))
  15.                   (+ (cadr pt1) (* hh *bl))
  16.                   0.0
  17.             )
  18.   )
  19.   (xdrx_polyline_make t pt1 pt2 pt3 pt4)
  20.   (setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))
  21.   (xdrx_polyline_SetConstantWidth jxk *bl)
  22.   (XD::Curve:NumDiv jxk pt pt5 8)
  23.   (XD::Curve:NumDiv jxk pt5 pt6 10)
  24.   (XD::Curve:NumDiv jxk pt6 pt7 8)
  25.   (XD::Curve:NumDiv jxk pt7 pt 10)
  26.   (xdrx_line_make pt8 pt9)
  27. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-28 09:07:04 | 显示全部楼层
  1. (defun dfhx (curve startPnt endPnt div)
  2.       (setq lst (XD::Curve:NumDiv curve startPnt endPnt div))
  3.       (mapcar '(lambda (x / v v1)
  4.                  (setq v  (xdrx_vector_perpvector (cadr x)) ;_垂向量
  5.                        v1 (xdrx_vector_product v (* 5 *bl)) ;_放大的指定长度
  6.                        p1 (mapcar '+ (car x) v1)
  7.                  )
  8.                  (xdrx_line_make (car x) p1) ;_绘制短线
  9.                )
  10.               lst
  11.       )
  12.      (redraw)
  13. )
  14. (defun c:tt ()
  15.         (XD::Begin)
  16.   (setq        strl   '("crtk:dialog{label="插入图框";"
  17.                  "initial_focus="a2";"
  18.                  "\n :boxed_column{label="图幅";"
  19.                  "\n :row{"
  20.                  "\n :boxed_radio_column{"
  21.                  "\n :radio_button{label="A0";key="a0";}"                       
  22.                  "\n :radio_button{label="A1";key="a1";}"
  23.                  "\n :radio_button{label="A2";key="a2";value=1;}"
  24.                  "\n :radio_button{label="A3";key="a3";}"
  25.                  "\n :radio_button{label="A4";key="a4";}}"
  26.                  "\n :column{"
  27.                  "\n :radio_row{"
  28.                  "\n :radio_button{label="横式";key="lev";value=1;}"
  29.                  "\n :radio_button{label="立式";key="ver";}}"
  30.                  "\n :edit_box {label="图长:";key="drl";width=10;}"
  31.                  "\n :edit_box {label="图宽:";key="drw";width=10;}"
  32.                  "\n :popup_list {label="加长:";key="dl_list";}}"
  33.                  "}}"                       
  34.                  "ok_cancel;}"
  35.      )
  36.                         fn     (xd::dcl:make strl)
  37.                 dcl_id (load_dialog fn)
  38.   )
  39.   (if (not (new_dialog "crtk" dcl_id))
  40.     (exit)
  41.   )
  42.         (action_tile "a0" "(setq ll 1189 hh 841)")
  43.         (action_tile "a1" "(setq ll 841 hh 594)")
  44.   (action_tile "a2" "(setq ll 594 hh 420)")
  45.   (action_tile "a3" "(setq ll 420 hh 297)")
  46.         (action_tile "a4" "(setq ll 297 hh 210)")
  47.   (action_tile "accept" "(setq h_v (get_tile "ver"))(done_dialog 1)")
  48.   (action_tile "cancel" "(done_dialog)")
  49.   (setq std (start_dialog))
  50.   (unload_dialog dcl_id)
  51.   (vl-file-delete fn)
  52.         (if (= h_v "1") (setq ww ll ll hh hh ww))
  53.         (if (> std 0) (htk))
  54.         (XD::End)
  55.   (princ)
  56. )
  57. (defun htk ()
  58.         (setq pt  (getpoint "\n插入点:")
  59.               *bl 100
  60.                     pt1 (list (+(car pt) (* 5 *bl)) (-(cadr pt) (* 5 *bl)))
  61.                     pt2 (list (car pt1) (+(cadr pt1) (* hh *bl)))
  62.                                 pt3 (list (-(car pt1)(* ll *bl)) (+(cadr pt1) (* hh *bl)))
  63.                     pt4 (list (-(car pt1)(* ll *bl)) (cadr pt1))
  64.                     pt5 (list (car pt) (+(cadr pt) (*(- hh 10) *bl)) 0.0)
  65.                     pt6 (list (-(car pt)(*(- ll 30) *bl)) (+(cadr pt) (*(- hh 10) *bl)) 0.0)
  66.                     pt7 (list (-(car pt)(*(- ll 30) *bl)) (cadr pt) 0.0)
  67.                     pt8 (list (-(car pt1)(*(- ll 20) *bl)) (cadr pt1) 0.0)
  68.                     pt9 (list (-(car pt1)(*(- ll 20) *bl)) (+(cadr pt1) (* hh *bl)) 0.0)
  69.         )
  70.   (xdrx_polyline_make t pt1 pt2 pt3 pt4)
  71.         (setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))
  72.         (xdrx_polyline_SetConstantWidth jxk *bl)
  73.         (dfhx jxk pt pt5 8)
  74.         (dfhx jxk pt5 pt6 10)
  75.         (dfhx jxk pt6 pt7 8)
  76.         (dfhx jxk pt7 pt 10)
  77.         (xdrx_line_make pt8 pt9)
  78. )
还是不行,polyline线等分不了。把*bl变量加上了,帮忙试一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-28 09:26:55 | 显示全部楼层
建议你下面这部分重写,太乱了。

  •                     pt1 (list (+(car pt) (* 5 *bl)) (-(cadr pt) (* 5 *bl)))

  •                                
    登录/注册后可看大图
                        pt2 (list (car pt1) (+(cadr pt1) (* hh *bl)))

  •                                
    登录/注册后可看大图
                                    pt3 (list (-(car pt1)(* ll *bl)) (+(cadr pt1) (* hh *bl)))

  •                                
    登录/注册后可看大图
                        pt4 (list (-(car pt1)(* ll *bl)) (cadr pt1))

  •                                
    登录/注册后可看大图
                        pt5 (list (car pt) (+(cadr pt) (*(- hh 10) *bl)) 0.0)

  •                                
    登录/注册后可看大图
                        pt6 (list (-(car pt)(*(- ll 30) *bl)) (+(cadr pt) (*(- hh 10) *bl)) 0.0)

  •                                
    登录/注册后可看大图
                        pt7 (list (-(car pt)(*(- ll 30) *bl)) (cadr pt) 0.0)

  •                                
    登录/注册后可看大图
                        pt8 (list (-(car pt1)(*(- ll 20) *bl)) (cadr pt1) 0.0)

  •                                
    登录/注册后可看大图
                        pt9 (list (-(car pt1)(*(- ll 20) *bl)) (+(cadr pt1) (* hh *bl))


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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 09:28:32 | 显示全部楼层
zhangq_cai1 发表于 2014-11-28 09:07
还是不行,polyline线等分不了。把*bl变量加上了,帮忙试一下

只有最后一段需要把 10 加括号, 其他没有问题
  1. (defun c:tt (/ strl fn dcl_id std ll hh)
  2.   (defun dfhx (curve startPnt endPnt div / lst)
  3.     (setq lst (XD::Curve:NumDiv curve startPnt endPnt div))
  4.     (mapcar '(lambda (x / v v1 p1)
  5.                (setq v        (xdrx_vector_perpvector (cadr x)) ;_垂向量
  6.                      v1        (xdrx_vector_product v (* 5 *bl)) ;_放大的指定长度
  7.                      p1        (mapcar '+ (car x) v1)
  8.                )
  9.                (xdrx_line_make (car x) p1) ;_绘制短线
  10.              )
  11.             lst
  12.     )
  13.     (redraw)
  14.   )
  15.   (defun htk (/ pt pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 jxk)
  16.     (setq pt  (getpoint "\n插入点:")
  17.           *bl 100
  18.           pt1 (list (+ (car pt) (* 5 *bl)) (- (cadr pt) (* 5 *bl)))
  19.           pt2 (list (car pt1) (+ (cadr pt1) (* hh *bl)))
  20.           pt3 (list (- (car pt1) (* ll *bl)) (+ (cadr pt1) (* hh *bl)))
  21.           pt4 (list (- (car pt1) (* ll *bl)) (cadr pt1))
  22.           pt5 (list (car pt) (+ (cadr pt) (* (- hh 10) *bl)) 0.0)
  23.           pt6 (list (- (car pt) (* (- ll 30) *bl))
  24.                     (+ (cadr pt) (* (- hh 10) *bl))
  25.                     0.0
  26.               )
  27.           pt7 (list (- (car pt) (* (- ll 30) *bl)) (cadr pt) 0.0)
  28.           pt8 (list (- (car pt1) (* (- ll 20) *bl)) (cadr pt1) 0.0)
  29.           pt9 (list (- (car pt1) (* (- ll 20) *bl))
  30.                     (+ (cadr pt1) (* hh *bl))
  31.                     0.0
  32.               )
  33.     )
  34.     (xdrx_polyline_make t pt1 pt2 pt3 pt4)
  35.     (setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))
  36.     (xdrx_polyline_SetConstantWidth jxk *bl)
  37.     (dfhx jxk pt pt5 8)
  38.     (dfhx jxk pt5 pt6 10)
  39.     (dfhx jxk pt6 pt7 8)
  40.     (dfhx jxk pt7 pt '(10))
  41.     (xdrx_line_make pt8 pt9)
  42.   )
  43.   (XD::Begin)
  44.   (setq        strl   '("crtk:dialog{label=\"插入图框\";"
  45.                  "initial_focus=\"a2\";"
  46.                  "\n :boxed_column{label=\"图幅\";" "\n :row{"
  47.                  "\n :boxed_radio_column{"
  48.                  "\n :radio_button{label=\"A0\";key=\"a0\";}"
  49.                  "\n :radio_button{label=\"A1\";key=\"a1\";}"
  50.                  "\n :radio_button{label=\"A2\";key=\"a2\";value=1;}"
  51.                  "\n :radio_button{label=\"A3\";key=\"a3\";}"
  52.                  "\n :radio_button{label=\"A4\";key=\"a4\";}}"
  53.                  "\n :column{" "\n :radio_row{"
  54.                  "\n :radio_button{label=\"横式\";key=\"lev\";value=1;}"
  55.                  "\n :radio_button{label=\"立式\";key=\"ver\";}}"
  56.                  "\n :edit_box {label=\"图长:\";key=\"drl\";width=10;}"
  57.                  "\n :edit_box {label=\"图宽:\";key=\"drw\";width=10;}"
  58.                  "\n :popup_list {label=\"加长:\";key=\"dl_list\";}}"
  59.                  "}}" "ok_cancel;}")
  60.         fn     (xd::dcl:make strl)
  61.         dcl_id (load_dialog fn)
  62.   )
  63.   (if (not (new_dialog "crtk" dcl_id))
  64.     (exit)
  65.   )
  66.   (action_tile "a0" "(setq ll 1189 hh 841)")
  67.   (action_tile "a1" "(setq ll 841 hh 594)")
  68.   (action_tile "a2" "(setq ll 594 hh 420)")
  69.   (action_tile "a3" "(setq ll 420 hh 297)")
  70.   (action_tile "a4" "(setq ll 297 hh 210)")
  71.   (action_tile
  72.     "accept"
  73.     "(setq h_v (get_tile \"ver\"))(done_dialog 1)"
  74.   )
  75.   (action_tile "cancel" "(done_dialog)")
  76.   (setq std (start_dialog))
  77.   (unload_dialog dcl_id)
  78.   (vl-file-delete fn)
  79.   (if (= h_v "1")
  80.     (setq ww ll
  81.           ll hh
  82.           hh ww
  83.     )
  84.   )
  85.   (if (> std 0)
  86.     (htk)
  87.   )
  88.   (XD::End)
  89.   (princ)
  90. )



20141128092650.jpg

点评

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

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-28 11:01:52 | 显示全部楼层
把线改为(setq jxk (ssname (xdrx_line_make startPnt endPnt) 0))就能等分。如果是(setq jxk (xdrx_polyline_make t pt pt5 pt6 pt7))就出错。http://bbs.xdcad.net/thread-676272-2-1.html我用pl画线也出错
QQ截图20141128110059.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 862个

财富等级: 财运亨通

发表于 2014-11-28 11:03:58 | 显示全部楼层
st788796 发表于 2014-11-28 09:28
只有最后一段需要把 10 加括号, 其他没有问题

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

 楼主| 发表于 2014-11-28 11:06:17 | 显示全部楼层
zhangq_cai1 发表于 2014-11-28 11:01
把线改为(setq jxk (ssname (xdrx_line_make startPnt endPnt) 0))就能等分。如果是(setq jxk (xdrx_polyl ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 01:37 , Processed in 0.245219 second(s), 61 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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