明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: changyiran

[讨论] 如何在拖动多段线一拐点的过程中面积实时改变

[复制链接]
 楼主| 发表于 2014-11-25 15:37 | 显示全部楼层
newbuser 发表于 2014-11-24 11:31
小试了下牛刀,初步测试应该可以满足您的要求。

谢谢你,你这是用反应器实现的,我用grread也已经实现了
发表于 2014-11-25 19:42 来自手机 | 显示全部楼层
changyiran 发表于 2014-11-25 15:37
谢谢你,你这是用反应器实现的,我用grread也已经实现了

既然用grread已经实现了,那就发上来和大家分享下,论坛的宗旨就是互相分享!大家才能共同进步!
发表于 2014-11-25 20:36 | 显示全部楼层
能否实现面积表示s=
 楼主| 发表于 2014-11-25 21:10 | 显示全部楼层
Gu_xl 发表于 2014-11-25 19:42
既然用grread已经实现了,那就发上来和大家分享下,论坛的宗旨就是互相分享!大家才能共同进步!

听G版的,现在发上来
 楼主| 发表于 2014-11-25 21:11 | 显示全部楼层
  1. (defun c:dtmj(/ );动态面积
  2.   (command"undo""m")
  3.   (if(and(setq en(car(setq xz(entsel"\n请选择地块线:"))))
  4.          (="地块线"(cdr(assoc 8(setq el(entget en)))))
  5.      )
  6.     (progn
  7.       (setq bb(fjdb en)
  8.             obj(vlax-ename->vla-object en)
  9.             mjss(ssget'"cp"bb'((0 . "text")(8 . "实测面积")))
  10.             n -1
  11.       )
  12.       (repeat(sslength mjss)
  13.           (setq men(ssname mjss(setq n(1+ n))))
  14.           (setq zdzd(cdr(assoc 11(entget men))))
  15.           (if(=(wzgx zdzd en)-1)
  16.             (setq mjen men)
  17.           )
  18.       )
  19.       (setq
  20.             pt(cadr xz)
  21.             zjd(vlax-curve-getclosestpointto obj pt)
  22.             cs(vlax-curve-getParamAtPoint obj zjd)
  23.             cs(atoi(rtos cs 2 0))
  24.             pt(vlax-curve-getpointatparam obj cs)
  25.             pt(list(car pt)(cadr pt))
  26.             mode t
  27.       )
  28.       (while mode
  29.              (setq mo(grread t 15 0)
  30.                    co(car mo)
  31.              )
  32.              (cond((member co '(2 3 25 32))        ;其它 右键 右键 空格
  33.                    (setq mode nil)
  34.                   )
  35.                   (t
  36.                    (setq p1(cadr mo))
  37.                    (entmod(subst(cons 10 p1)(cons 10 pt)el))
  38.                    (setq bb(fjdb en))
  39.                    (setq zxzb(list(/(apply'+(mapcar'(lambda(x)(car x))bb))(length bb))(/(apply'+(mapcar'(lambda(x)(cadr x))bb))(length bb))))
  40.                    (setq mj(rtos(*(vla-get-area obj)0.0015) 2 2))
  41.                    (setq mjel(subst(cons 1 mj)(assoc 1(entget mjen))(entget mjen)))
  42.                    (entmod(subst(cons 11 zxzb)(assoc 11 mjel)mjel))
  43.                   )
  44.              )
  45.       )
  46.      )
  47.    )
  48. )
 楼主| 发表于 2014-11-25 21:13 | 显示全部楼层
changyiran 发表于 2014-11-25 21:11

本程序受学院派院长启发,特此感谢!
发表于 2014-11-26 00:24 | 显示全部楼层
changyiran 发表于 2014-11-25 21:11

缺少函数fjdb、wzgx!
另外程序没有考虑ucs和wcs的问题!当ucs和wcs不一致时程序肯定出错!
 楼主| 发表于 2014-11-26 09:28 | 显示全部楼层
Gu_xl 发表于 2014-11-26 00:24
缺少函数fjdb、wzgx!
另外程序没有考虑ucs和wcs的问题!当ucs和wcs不一致时程序肯定出错!

版主高见,怪不得为啥我有时候第一次运行程序时会出错,第二次就恢复正常了,估计就是ucs和wcs不一致造成的,另外fjdb和wzgx是我编的函数,一个是求拐点坐标,一个是判断点在多边形内外,感觉比较简单就没放上去。
发表于 2014-11-26 15:51 | 显示全部楼层
changyiran 发表于 2014-11-26 09:28
版主高见,怪不得为啥我有时候第一次运行程序时会出错,第二次就恢复正常了,估计就是ucs和wcs不一致造成 ...

希望补齐完整息定函数,函数参数用法不好判断,谢谢
发表于 2014-11-28 08:21 | 显示全部楼层
changyiran 发表于 2014-11-26 09:28
版主高见,怪不得为啥我有时候第一次运行程序时会出错,第二次就恢复正常了,估计就是ucs和wcs不一致造成 ...

期待完整版出现,多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-1 05:49 , Processed in 0.364886 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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