找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: brainstorm

[API建议] xdrx_drag_jig建议

[复制链接]

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-14 17:00:59 | 显示全部楼层
  1. (defun c:tt (/ *error*)
  2.   (defun *error* (msg)
  3.     (xdrx_pointmonitor)
  4.     (if        e
  5.       (entupd e)
  6.     )

  7.     (xdrx_sysvar_pop)
  8.     (princ "\n canceled ... ... ... ... ")
  9.     (princ)
  10.   )
  11.   (vl-acad-defun 'dragtext)
  12.   (defun dragtext (p)
  13.     (setq dist (vlax-curve-getdistatpoint curve p))
  14.     (xdrx_modent
  15. ;;;      10
  16. ;;;      (polar p 1.2 300)
  17. ;;;      1
  18. ;;;      (VL-PRIN1-TO-STRING dist)
  19.       50
  20.       (angle
  21.         (vlax-curve-getfirstDeriv
  22.           curve
  23.           (vlax-curve-getParamAtPoint curve p)
  24.         )
  25.         '(0 0 0)
  26.       )
  27.     )
  28.   )
  29.   (xdrx_sysvar_push '("orthomode" 0) '("autosnap" 55))
  30.   (while (setq e (car (entsel)))
  31.     (xdrx_setenttodb e)
  32.     (setq curve (vlax-ename->vla-object (car (entsel "\n选择曲线:"))))
  33.     (xdrx_pointmonitor "dragtext")
  34.     (getpoint "\nselect the position of text")
  35.     (xdrx_pointmonitor)
  36.   )
  37.   (xdrx_sysvar_pop)
  38. )

这个代码只能执行一次,提示如下
; 警告: 忽略展开 异常
; 错误: 出现异常: 0xC0000005 (访问冲突
问题出在哪里,其他都没问题,就是想改变文字转角时有问题
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-14 17:04:19 | 显示全部楼层

这个你想要做什么?

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-14 17:36:38 | 显示全部楼层
本帖最后由 newer 于 2017-8-14 17:39 编辑

图片是你想做的?

移动文字.gif

  1. (defun c:tt (/ *error*)
  2.   (defun *error* (msg)
  3.     (xdrx_pointmonitor)
  4.     (xdrx_sysvar_pop)
  5.     (princ "\n canceled ... ... ... ... ")
  6.     (princ)
  7.   )
  8.   (vl-acad-defun 'dragtext)
  9.   (defun dragtext (p)
  10.     (setq p1 (xdrx_curve_getclosestpoint curve p)
  11.           f1 (xdrx_curve_getfirstderiv curve p1)
  12.           an (xdrx_vector_angle f1)
  13.           an (xd::geom:angleformat an))
  14.     (xdrx_setpropertyvalue e "position" p1 "rotation"  an)
  15.   )
  16.   (xdrx_sysvar_push '("orthomode" 0) '("autosnap" 0))
  17.   (while (and (setq e (car (entsel)))
  18.               (setq curve (car (entsel "\n选择曲线:")))
  19.          )
  20.     (xdrx_pointmonitor "dragtext")
  21.     (getpoint "\nselect the position of text")
  22.     (xdrx_pointmonitor)
  23.   )
  24.   (xdrx_sysvar_pop)
  25. )



用 xdrx_modent 是这样

  1. (defun c:tt (/ *error*)
  2.   (defun *error* (msg)
  3.     (xdrx_pointmonitor)
  4.     (xdrx_sysvar_pop)
  5.     (princ "\n canceled ... ... ... ... ")
  6.     (princ)
  7.   )
  8.   (vl-acad-defun 'dragtext)
  9.   (defun dragtext (p)
  10.     (setq p1 (xdrx_curve_getclosestpoint curve p)
  11.           f1 (xdrx_curve_getfirstderiv curve p1)
  12.           an (xdrx_vector_angle f1)
  13.           an (xd::geom:angleformat an))
  14.     (xdrx_modent 10 p1 50 an)
  15.   )
  16.   (xdrx_sysvar_push '("orthomode" 0) '("autosnap" 0))
  17.   (while (and (setq e (car (entsel)))
  18.               (setq curve (car (entsel "\n选择曲线:")))
  19.          )
  20.     (xdrx_setenttodb e)
  21.     (xdrx_pointmonitor "dragtext")
  22.     (getpoint "\nselect the position of text")
  23.     (xdrx_pointmonitor)
  24.   )
  25.   (xdrx_sysvar_pop)
  26. )


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

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-14 17:40:42 来自手机 | 显示全部楼层
好 这是个练习 想读取选点在处曲线长度,让文字值随长度变化而变化 文字角度随曲线
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-14 17:47:45 | 显示全部楼层

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-14 17:54:35 | 显示全部楼层

移动修改文字.gif

  1. (defun c:tt (/ *error*)
  2.   (defun *error* (msg)
  3.     (xdrx_pointmonitor)
  4.     (xdrx_sysvar_pop)
  5.     (princ "\n canceled ... ... ... ... ")
  6.     (princ)
  7.   )
  8.   (vl-acad-defun 'dragtext)
  9.   (defun dragtext (p)
  10.     (setq p1 (xdrx_curve_getclosestpoint curve p)
  11.           f1 (xdrx_curve_getfirstderiv curve p1)
  12.           dist (xdrx_curve_getdistatpoint curve p1)
  13.           an (xdrx_vector_angle f1)
  14.           an (xd::geom:angleformat an))
  15.     (xdrx_modent 1 (rtos dist 2 2) 10 p1 50 an)
  16.   )
  17.   (xdrx_sysvar_push '("orthomode" 0) '("autosnap" 0))
  18.   (while (and (setq e (car (entsel)))
  19.               (setq curve (car (entsel "\n选择曲线:")))
  20.          )
  21.     (xdrx_setenttodb e)
  22.     (xdrx_pointmonitor "dragtext")
  23.     (getpoint "\nselect the position of text")
  24.     (xdrx_pointmonitor)
  25.   )
  26.   (xdrx_sysvar_pop)
  27. )



或者

  1. (defun c:tt (/ *error*)
  2.   (defun *error* (msg)
  3.     (xdrx_pointmonitor)
  4.     (xdrx_sysvar_pop)
  5.     (princ "\n canceled ... ... ... ... ")
  6.     (princ)
  7.   )
  8.   (vl-acad-defun 'dragtext)
  9.   (defun dragtext (p)
  10.     (setq p1 (xdrx_curve_getclosestpoint curve p)
  11.           f1 (xdrx_curve_getfirstderiv curve p1)
  12.           dist (xdrx_curve_getdistatpoint curve p1)
  13.           an (xdrx_vector_angle f1)
  14.           an (xd::geom:angleformat an))
  15.     (xdrx_setpropertyvalue e "textstring" (rtos dist 2 2) "rotation" an "position" p1)
  16.   )
  17.   (xdrx_sysvar_push '("orthomode" 0) '("autosnap" 0))
  18.   (while (and (setq e (car (entsel)))
  19.               (setq curve (car (entsel "\n选择曲线:")))
  20.          )
  21.     (xdrx_pointmonitor "dragtext")
  22.     (getpoint "\nselect the position of text")
  23.     (xdrx_pointmonitor)
  24.   )
  25.   (xdrx_sysvar_pop)
  26. )


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

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-14 20:18:52 来自手机 | 显示全部楼层
这个可以改造成道路标号的标注,比如道路是曲线的,按一定坡度放坡,只要给定坡度,判断选点在start point还是endpoint就可以了,很方便实用.  
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-8-14 20:26:55 | 显示全部楼层

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

使用道具 举报

已领礼包: 58个

财富等级: 招财进宝

 楼主| 发表于 2017-8-14 21:16:44 | 显示全部楼层
好的 我试一下 其实专业绘图软件这些标高都是自定义实体,用上面的代码基本可以实现编辑。
要发布到每日插件就写个通用的,思路是用属性块作为标高的符号,动态改变属性值。我在学习一下API关于如何添加属性块部分,争取能用API的都用API写。
下图是直接修改斯维尔标高符号的图片

tt6.gif


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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 16:00 , Processed in 0.233910 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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