找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: xtdwynij

[求助] 关于vlax-curve-getPointAtDist捕捉点问题

[复制链接]

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-8-31 14:24:25 | 显示全部楼层
xtdwynij 发表于 2013-8-31 11:43
昨天用的手机上没有办法贴上代码,晚上回家测试如下:

cqw为间距  cqwgs 为分段个数  间距为4个MM,分为四段。分为五段测试一样也是不行的!返回值为NIL (分段太多的话返回值都为空)

点评

你要是用点取判断的话,那么必须保证点在弧线上,如果用参数去判断的话,必须保证参数在曲线上,所以,每次你循环取点的时候,加个代码,如果是点,去下点到弧线的最近点,用最近点取操作,如果用参数,在终止的时候  详情 回复 发表于 2013-8-31 14:38
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-31 14:38:03 | 显示全部楼层
xtdwynij 发表于 2013-8-31 14:24
cqw为间距  cqwgs 为分段个数  间距为4个MM,分为四段。分为五段测试一样也是不行的!返回值为NIL (分段 ...

你要是用点取判断的话,那么必须保证点在弧线上,如果用参数去判断的话,必须保证参数在曲线上,所以,每次你循环取点的时候,加个代码,如果是点,去下点到弧线的最近点,用最近点取操作,如果用参数,在终止的时候,判断下是否和弧线的终点参数一样,不一样,取弧线的终点参数,因为浮点数有误差。

点评

我也觉得是有误差造成的!但是取最近点的话用VLISP函数么?版主能不能给个简单的例子学习一下?  详情 回复 发表于 2013-8-31 14:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-8-31 14:54:42 | 显示全部楼层
newer 发表于 2013-8-31 14:38
你要是用点取判断的话,那么必须保证点在弧线上,如果用参数去判断的话,必须保证参数在曲线上,所以,每 ...

我也觉得是有误差造成的!但是取最近点的话用VLISP函数么?版主能不能给个简单的例子学习一下?

点评

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

使用道具 举报

发表于 2013-8-31 20:37:43 | 显示全部楼层
xtdwynij 发表于 2013-8-31 14:54
我也觉得是有误差造成的!但是取最近点的话用VLISP函数么?版主能不能给个简单的例子学习一下?

(vlax-curve-getclosestpointto curve pt)

点评

晚了好多天!不过也是这个星期天才搞定的!其他根本就没有时间去,也只能想想怎么搞了!把老朋友的黑板空间也用上了!有哪里需要优化或者不足的地方还请老朋友能够指点一下!出错出理还没有学,也还没有加(有教程只  详情 回复 发表于 2013-9-10 12:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-9-10 12:20:23 | 显示全部楼层
Free-Lancer 发表于 2013-8-31 20:37
(vlax-curve-getclosestpointto curve pt)

晚了好多天!不过也是这个星期天才搞定的!其他根本就没有时间去,也只能想想怎么搞了!把老朋友的黑板空间也用上了!有哪里需要优化或者不足的地方还请老朋友能够指点一下!出错出理还没有学,也还没有加(有教程只是没抽得出来时间)!代码如下:

  1. (defun c:tt ( / )
  2.      (setvar "osmode" 0)
  3.      (setvar "cmdecho" 0)
  4.      (if (vl-bb-ref '#zccdqw)
  5.          (setq zccdqw (vl-bb-ref '#zccdqw))
  6.        (progn
  7.   (setq #dqwdx (getreal "\n请输入大桥的值<4>:"))
  8.   (if (null #dqwdx)(setq #dqwdx 4.))
  9.   (setq zccdqw (vl-bb-set '#zccdqw  #dqwdx))
  10.       )
  11.     )
  12.     (if (vl-bb-ref '#zccxqw)
  13.          (setq zccxqw (vl-bb-ref '#zccxqw))
  14.        (progn
  15.   (setq #xqwdx (getreal "\n请输入小桥的值

  16. <1.5>:"))
  17.   (if (null #xqwdx)(setq #xqwdx 1.5))
  18.   (setq zccxqw (vl-bb-set '#zccxqw  #xqwdx))
  19.       )
  20.     )
  21.     (setq dqwgs (getint "\n请输入大的个数:"))
  22.     (if (null dqwgs)
  23.         (progn
  24.           (setq xqwgs (getint "\n请输入小的个数:"))
  25.           (setq cqw zccxqw cqwgs xqwgs)
  26.         )
  27.          (setq cqw zccdqw cqwgs dqwgs)
  28.     )
  29.     (setq *dwgobj (vla-get-activedocument (vlax-get-

  30. acad-object)))
  31.     (setq *mspace (vla-get-modelspace *dwgobj))
  32.     (prompt "\n请选择要打桥的圆或圆弧:")
  33.     (setq zccqwss (ssget '((8 . "0") (0 .

  34. "CIRCLE,ARC,LINE"))))
  35.     (setq zccqwn 0 )
  36.    (repeat (sslength zccqwss)
  37.      (setq ent (ssname zccqwss zccqwn))
  38.      (setq qwentget (entget ent))
  39.      (cond
  40.       ((= (cdr (assoc 0 qwentget))  "ARC")
  41.        (setq zhobj (vlax-ename->vla-object ent))
  42.        (setq arccen (Vlax-Get zhobj 'Center ))
  43.        (setq arcrad (vlax-get zhobj 'Radius))
  44.        (setq arclen (vla-get-ArcLength zhobj))
  45.        (setq arcstart (vlax-curve-getstartpoint zhobj))
  46.        (setq arcdist (/ (- arclen (* cqw cqwgs)) (1+

  47. cqwgs)))
  48.        (setq arcpt1 (vlax-curve-getPointAtDist zhobj

  49. arcdist))
  50.        (setq arcpt2 (vlax-curve-getPointAtDist zhobj (+

  51. arcdist cqw)))
  52.        (setq stangle (angle arccen arcstart))
  53.        (setq endangle (angle arccen arcpt1))
  54.        (setq ccangle (- (angle arccen arcpt2) stangle))
  55.        (repeat (1+ cqwgs)
  56.        (Vlax-Invoke-Method *mspace 'AddArc (vlax-

  57. 3d-point arccen) arcrad stangle endangle)
  58.        (setq stangle (+ stangle ccangle))
  59.        (setq endangle (+ endangle ccangle))
  60.   )
  61.        (Vlax-Invoke-Method zhobj 'Delete )
  62.        );完毕
  63.       ((= (cdr (assoc 0 qwentget))  "CIRCLE")
  64.        (setq zhobj (vlax-ename->vla-object ent))
  65.        (setq circen (Vlax-Get zhobj 'Center ))
  66.        (setq cirrad (vlax-get zhobj 'Radius))
  67.        (setq cirlen (Vlax-Get zhobj 'Circumference))
  68.        (Vlax-Invoke-Method zhobj 'Delete )
  69.        (setq cirdist (/ (- cirlen (* cqw cqwgs)) cqwgs))
  70.        (setq zhobj1 (Vlax-Invoke-Method *mspace 'AddArc

  71. (vlax-3d-point circen) cirrad 0 6.20426))
  72.        (setq cirendangle (angle circen (vlax-curve-

  73. getPointAtDist zhobj1 cirdist)))
  74.        (setq cirpt1 (angle circen (vlax-curve-

  75. getPointAtDist zhobj1 (+ cirdist cqw))))
  76.        (Vlax-Invoke-Method zhobj1 'Delete )
  77.        (setq cirn 0)
  78.        (repeat (1+ cqwgs)
  79.        (Vlax-Invoke-Method *mspace 'AddArc (vlax-

  80. 3d-point circen) cirrad cirn cirendangle)
  81.        (setq cirn (+ cirn cirpt1))
  82.        (setq cirendangle (+ cirendangle cirpt1))
  83.   )
  84.       ) ;完毕
  85.       
  86.      (setq zccqwn (1+ zccqwn))
  87.     )
  88.    (setvar "osmode" 3)
  89. )

另外如果用VLISP生成线的话是不是只能是一个起点一个终点!假如我想加上色呢!

点评

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-10 12:29:23 | 显示全部楼层
xtdwynij 发表于 2013-9-10 12:20
晚了好多天!不过也是这个星期天才搞定的!其他根本就没有时间去,也只能想想怎么搞了!把老朋友的黑板空 ...

你想画线有颜色,就给它设置颜色就是了。

点评

(ADDLINE 起点 终点 色)?这样么?好像不行哦!多了好像是不行。只能二个点!  详情 回复 发表于 2013-9-10 13:00
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-9-10 13:00:31 | 显示全部楼层
newer 发表于 2013-9-10 12:29
你想画线有颜色,就给它设置颜色就是了。

(ADDLINE  起点 终点 色)?这样么?好像不行哦!多了好像是不行。只能二个点!

点评

或者 add 之前 设置 cecolor 系统变量  详情 回复 发表于 2013-9-10 18:27
多看帮助手册哦。  详情 回复 发表于 2013-9-10 17:36
addline 以后再对 line vla-put-color  详情 回复 发表于 2013-9-10 16:31
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-10 16:31:16 来自手机 | 显示全部楼层
xtdwynij 发表于 2013-9-10 13:00
(ADDLINE  起点 终点 色)?这样么?好像不行哦!多了好像是不行。只能二个点!

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-9-10 17:36:47 | 显示全部楼层
xtdwynij 发表于 2013-9-10 13:00
(ADDLINE  起点 终点 色)?这样么?好像不行哦!多了好像是不行。只能二个点!

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

使用道具 举报

发表于 2013-9-10 18:27:45 | 显示全部楼层
xtdwynij 发表于 2013-9-10 13:00
(ADDLINE  起点 终点 色)?这样么?好像不行哦!多了好像是不行。只能二个点!

  1. (setq arc (vla-addarc
  2.         *mspace
  3.         (vlax-3d-point circen)
  4.         cirrad
  5.         cirn
  6.         cirendangle
  7.       )
  8. )
  9. (vla-put-color arc acRed)

或者 add 之前 设置 cecolor 系统变量

点评

嗯,不然的话线也生成不了!LISP的话一次可以生成!看了您的函数,原来那个函数是容错函数啊!最近也学了点注册表的读写!和黑板空间没啥二样。读书文件的话好像还要手工确认保存的!要搞全局变量的话还是注册表好一  详情 回复 发表于 2013-9-12 00:10
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-9-12 00:10:09 | 显示全部楼层
Free-Lancer 发表于 2013-9-10 18:27
或者 add 之前 设置 cecolor 系统变量

嗯,不然的话线也生成不了!LISP的话一次可以生成!看了您的函数,原来那个函数是容错函数啊!最近也学了点注册表的读写!和黑板空间没啥二样。读书文件的话好像还要手工确认保存的!要搞全局变量的话还是注册表好一点!但是黑板空间也不错,只要输入一次就行了!不麻烦呵呵!

点评

全局变量要么单独提供一个命令,要么在程序中有个提示,不然可能混乱  详情 回复 发表于 2013-9-12 08:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-12 08:58:18 来自手机 | 显示全部楼层
xtdwynij 发表于 2013-9-12 00:10
嗯,不然的话线也生成不了!LISP的话一次可以生成!看了您的函数,原来那个函数是容错函数啊!最近也学了 ...

全局变量要么单独提供一个命令,要么在程序中有个提示,不然可能混乱

点评

例如呢?(setq aa 5) (princ "全局变量的值为5")?类似于这样么?  详情 回复 发表于 2013-9-12 10:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-9-12 10:19:27 | 显示全部楼层
st788796 发表于 2013-9-12 08:58
全局变量要么单独提供一个命令,要么在程序中有个提示,不然可能混乱

例如呢?(setq aa 5)  (princ "全局变量的值为5")?类似于这样么?

点评

对,否则很容易忘记已经设置的数值,再智能点,选择的时候有个关键字,可以直接选择也可以选项去修改设置  详情 回复 发表于 2013-9-12 11:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-12 11:04:41 来自手机 | 显示全部楼层
xtdwynij 发表于 2013-9-12 10:19
例如呢?(setq aa 5)  (princ "全局变量的值为5")?类似于这样么?

对,否则很容易忘记已经设置的数值,再智能点,选择的时候有个关键字,可以直接选择也可以选项去修改设置

点评

这也是一个技巧啊!朋友给个例子看一下呗!多谢指点,以后加上全局变量就不会冲突了!  详情 回复 发表于 2013-9-15 12:29
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 449个

财富等级: 日进斗金

 楼主| 发表于 2013-9-15 12:29:14 | 显示全部楼层
st788796 发表于 2013-9-12 11:04
对,否则很容易忘记已经设置的数值,再智能点,选择的时候有个关键字,可以直接选择也可以选项去修改设置

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 06:29 , Processed in 0.206725 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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