乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 91|回复: 8

[编程交流] 边界工具

[复制链接]

3

主题

6

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 22:40:03 | 显示全部楼层 |阅读模式
我想回答这个问题。我正在使用Autocad绘制土地平面图。那么我就没有简单的方法来划分这些土地了。现在我正在做下面提到的事情。首先,将绘制土地的边界,使其成为闭合对象。接下来,使用线高程大致标记土地的一部分。使用边界工具,边界指向该标记点。测量该点的面积后,将计算的面积与原始面积进行比较。如果不匹配,则在边界对象中拉伸夹点。重复这一点,我必须调整相关区域。这不是一项容易的任务。
如果我能像下面所给的那样做,那将很容易。将夹点编辑为鼠标指针时,如果显示该区域,将很容易。请让我知道是否有任何lisp程序可用。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 22:50:41 | 显示全部楼层
嗨,马尔卡森,没有回应,也许会员们不理解你的要求?
你能详细阐述一下吗,或者附上一张有评论的图纸?
这里的成员乐于提供帮助。非常感谢。
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 23:01:59 | 显示全部楼层
如果我理解正确,您希望调整地块(边界)面积,直到达到所需面积。这是Civil 3D中的一个命令,称为地块布局工具下的回转线或滑动线。它在vanilla AutoCAD中不可用。在这个过程中,我没有遇到lisp文件,编写一个lisp文件有点困难。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:06:53 | 显示全部楼层
 
对于两个简单形状,一条平行线可以实现,比如说4个点,沿着一条线在固定brg处迭代移动该线,直到给出具有公差的面积。与固定点和摆动相同,VL相交将计算出缺失点,然后仅计算出具有已知点的区域。一旦引入曲线,是的,除了一些简单的变化外,它变得复杂。使用Bpoly可以快速获得任何形状的面积。我很确定有一些代码。
 
234007yqg7qsy7dg4047n1.jpg
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:15:06 | 显示全部楼层
谢谢你的解释,一个图像比文字更能说明问题
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:24:40 | 显示全部楼层
如果每个地块都有闭合的多段线,则当高光化多段线时,然后选择要移动的顶点,该区域在可以同时打开的属性框中很容易看到。虽然它不会实时读取,但一旦释放顶点,它就会更新,从而得到相当快的结果。无需输入任何按键即可获得区域属性。。。。
 
我想可以编写一个函数来完成你想要的,使用grread函数和一些复杂的方程来考虑所有可能的几何体。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:30:20 | 显示全部楼层
Snownut在做地块时,你必须进入所需的区域,这就是问题的症结所在,土地开发都是基于一个区域的最大地块,手动移动非常困难,在我这里,他们下降到300m2。可能有4-5种方法的变体,我发布了两种最常见的。正如我所建议的那样,不使用BPOLY来获得最终结果要容易得多。如果你做10个同样大小的批次,只需输入10次。就像大多数事情一样,我可以使用两个软件产品来完成它。
 
我知道YMG再次在表面上做了一些事情,这是请免费添加其他东西,CIV3,Stringer,Civilcad或其他人做的,你必须付费。如果我能找到时间,我会试试的。
回复

使用道具 举报

4

主题

194

帖子

192

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 23:34:52 | 显示全部楼层
比加尔,
 
我理解你的意思,但很明显,OP没有一个民事方案,只是想给他一个提示。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:47:19 | 显示全部楼层
我对这个实验感兴趣,第一步:测试摆动功能。
欢迎编码人员参与此任务
参数:a和b=ename,a=边界(统计),b=要动态拉伸的线。
 
我的意见计算面积可能比bpoly快?
 
  1. ;Dynamic swing
  2. http://www.cadtutor.net/forum/showthread.php?87809-boundary-tool
  3. ;hanhphuc 30/07/14
  4. (defun swingl (a b fuzz / ss c i p1 p l o catch oops ls)
  5. (if (and (= (vla-get-objectname b) "AcDbLine")
  6.    (setq p1 (getpoint "\nStretch point..")
  7.          i  5
  8.          ) ;_ end of setq
  9.    ) ;_ end of and
  10.    (progn (terpri)
  11.    (while (and (setq l (grread nil 13 0)) (= (car l) 5))
  12.      (setq i (car l)
  13.            p (cadr l)
  14.            ) ;_ end of setq
  15.      (redraw (vlax-vla-object->ename a) 4)
  16.      (if (and a b (listp p))
  17.        (progn (vla-put-EndPoint b (vlax-3d-point (trans p 1 0)))
  18.               (setq catch (vl-catch-all-apply
  19.                             ''((a b)
  20.                                (setq
  21.                                 l
  22.                                 (split (vlax-safearray->list (vlax-variant-value (vla-IntersectWith a b 0))) 3 nil)
  23.                                 )
  24.                                ) ;_ end of lambda
  25.                             (list a b)
  26.                             ) ;_ end of vl-catch-all-apply
  27.                     ) ;_ end of setq
  28.               ) ;_ end of progn
  29.        ) ;_ end of if
  30.      (setq p1 p)
  31.      (if (< (length l) o)
  32.        (princ "\n")
  33.        (princ "\r")
  34.        ) ;_ end of if
  35.      (if (vl-catch-all-error-p catch)
  36.        (princ)
  37.        (progn (setq oops (cons l oops))
  38. (foreach p l
  39. (markp (trans p 0 1))
  40. )
  41.          (redraw (vlax-vla-object->ename a) 3)
  42.               ) ;_ end of progn
  43.        ) ;_ end of if
  44.      (setq o (length l))
  45.      ) ;_ end of while
  46.    (redraw (vlax-vla-object->ename a) 4)
  47.      ) ;_ end of progn
  48.    ) ;_ end of if
  49. ) ;_ end of defun
  50. ;sub function: split
  51. ;http://www.cadtutor.net/forum/showthread.php?87320-Break-a-list-in-two-sub-lists&highlight=Split+list
  52. ;hanhphuc
  53. (defun split (lst len opt / ls l i) ; opt, T= by division or nil=by length
  54. (setq i 1 l '() len (if opt (/ (length lst) len) len))
  55. (while lst
  56.    (setq l (append  l (list(car lst))))
  57.    (if
  58.    (zerop (rem i len))
  59. (setq ls (cons l ls) l nil)
  60.    )
  61.    (setq i (1+ i) lst (cdr lst))
  62. ) ;_ end of foreach
  63. (if l
  64.    (append (reverse ls) (list  l))
  65.    (reverse ls)
  66. ) ;_ end of if
  67. ) ;_ end of defun

 
测试:
  1. (defun c:test(/ a b fuzz )
  2. (if
  3. (and
  4. (setq a (car(entsel "\nPick main entity (static).. ")))
  5. (setq b (car(entsel "\nPick secondary entity (dynamic).. ")))
  6.      )
  7. (apply 'swingl (append (mapcar ''((e) (vlax-ename->vla-object e )) (list a b))'(0.5)))
  8. ) ;_ end of if
  9. (princ)
  10. ) ;_ end of defun
  11. (defun dtor(_theta)
  12. (* (/ _theta 180.0) pi)        ; _theta=degree, to radian
  13. )
  14. (defun markp (_pt / _sc); R1.4
  15. (setq _sc (/ (getvar 'viewsize) (cadr (getvar 'screensize)))); dynamic
  16. (grvecs         (list         6 _pt (polar _pt (dtor 45) (* 5 _sc))        ;;1.4
  17.                                 6 _pt (polar _pt (dtor 135) (* 5 _sc))
  18.                         6 _pt (polar _pt (dtor 225) (* 5 _sc))
  19.                                6 _pt (polar _pt (dtor 315) (* 5 _sc))
  20. )
  21. ); grvecs
  22. ); mark
  23. ;area still pending, by bpoly or other method
  24. http://www.cadtutor.net/forum/showthread.php?87531-Lee-Mac-Geometry-function-explined&highlight=samifox
  25. ;hanhphuc 07/07/2014
  26. (defun 2d-area (l)
  27. (abs
  28.    (/ (apply '-
  29.       (mapcar '(lambda (x y)
  30.    (vxv  ; sub function by LEE MAC
  31.      (mapcar '(eval x) l)
  32.      (mapcar '(eval y)
  33.       (append (cdr l) (list (car l)))
  34.      )
  35.    ) ;_ vxv
  36.         ) ;_ end of lambda
  37.        '(car cadr)
  38.        '(cadr car)
  39.       ) ;_ end of mapcar
  40.       ) ;_ end of apply
  41.       2.
  42.    ) ;_ end of /
  43.    
  44. );_ end of abs
  45. ) ;_ end of defun
  46. ;; Vector Dot Product  -  Lee Mac
  47. ;; Args: u,v - vectors in R^n
  48. (defun vxv ( u v )
  49.    (apply '+ (mapcar '* u v))
  50. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:09 , Processed in 0.832356 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表