乐筑天下

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

[编程交流] 边界框问题

[复制链接]

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 17:39:41 | 显示全部楼层 |阅读模式
大家好,
 
有没有其他人注意到vla getboundingbox的错误?
在lisp中,我试图建立2个点来进行窗口选择,
但是边界框并不包围对象。
 
有什么想法吗?
 
谢谢
 
屏幕截图:
 
183946udzo04b8j6bcl38f.jpg
测验图纸
回复

使用道具 举报

0

主题

7

帖子

7

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 17:53:51 | 显示全部楼层
确保在创建边界框之前关闭“osnaps”。将当前osnaps值存储到局部变量,将其设置为零,绘制边界框,然后将osnaps恢复到用户以前拥有的状态,这是一种很好的做法。论坛上有很多这样的例子。
 
使用Tapatalk从我的SM-G935V发送
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 17:54:51 | 显示全部楼层
果然,这就是问题所在。
太简单了,我听不懂。。。
 
谢谢Jeffery_B
回复

使用道具 举报

0

主题

7

帖子

7

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 18:06:58 | 显示全部楼层
不客气!当我开始使用边界框时,我也遇到了同样的问题。
 
使用Tapatalk从我的SM-G935V发送
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:16:16 | 显示全部楼层
我建议将边界框设置为entmake,而不是使用命令调用,这样对象捕捉就没有效果了。
 
下面是一个示例:边界框。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 18:21:19 | 显示全部楼层
谢谢你,李,那肯定会使它更防弹。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 18:25:27 | 显示全部楼层
既然你们帮了大忙。
我有一个(到目前为止),另一个问题与这个特定的例行程序。
 
此例程有时会将对象偏移到错误的一侧。
我认为:
 
  1. (vla-offset obj -0.375)

 
是否会将对象偏移到“内部”?
 
第一篇文章中附着的dwg中的多段线对象出现错误。
 
草率且效率极低的代码:
 
 
  1. ;|
  2. PLEX CIRCLE OFFSET
  3. DRAWS CLEARANCE HOLES AND OFFSETS CIRCLES FOR COUNTERSINK
  4. WRITTEN BY P.DuMONT 02/18/2016 |;
  5. (defun c:PLO ( / cmde doc osn dia ent obj point1 point2 ln sset mx d0 pt di )
  6. (defun *error* (msg)
  7.    (if        (and msg
  8.      (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  9. )
  10.      (princ (strcat "\nError: " msg))
  11.    )
  12.    (if cmde
  13.      (setvar 'cmdecho cmde)
  14.      )
  15.    (if        doc
  16.      (vla-endundomark doc)
  17.      )
  18.    (if        osn
  19.      (setvar 'osmode osn)
  20.      )
  21.    (princ)
  22. ) ;_ end of defun
  23. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  24. (vla-startundomark doc)
  25. (setvar 'cmdecho 0)
  26. (setq osn (getvar 'osmode))
  27. (setvar 'osmode 0)
  28. (setq ent (car (entsel "\nSelect plex profile: ")))
  29. ; (command "_.ZOOM" "object" ent "")
  30. (setq dia 0.05)
  31. (setq obj (vlax-ename->vla-object ent))
  32. (vla-getboundingbox obj 'Point1 'Point2)
  33. (setq point1 (vlax-safearray->list Point1))
  34. (setq point2 (vlax-safearray->list Point2))
  35. (vla-offset obj -0.375)
  36. (command "_.explode" "l" "")
  37. (foreach ln
  38.    (vl-remove-if
  39.      'listp
  40.      (mapcar 'cadr
  41.              (ssnamex (ssget "_W" point1 point2 '((0 . "LINE"))))
  42.      ) ;_ end of mapcar
  43.    ) ;_ end of vl-remove-if
  44.    (command
  45.      "_.circle"
  46.      (vlax-curve-getStartPoint ln)
  47.      dia
  48.      "_.circle"
  49.      (vlax-curve-getEndPoint ln)
  50.      dia
  51.    ) ;_ end of command
  52. ) ;_ end of foreach
  53. (command "-overkill" "w" point1 point2 "" "")
  54. (setq di  ; HOLE SPACING
  55. (foreach ln
  56.    (vl-remove-if
  57.      'listp
  58.      (mapcar 'cadr
  59.              (ssnamex (ssget "_W" point1 point2 '((0 . "LINE"))))
  60.      ) ;_ end of mapcar
  61.    ) ;_ end of vl-remove-if
  62.    (setq mx (vlax-curve-getdistatparam ln (vlax-curve-getendparam ln))
  63.   d0 (- (/ (- mx (* di (fix (/ mx di)))) 2.) di)
  64.    ) ;_ end of setq
  65.    (while (and        (<= (setq d0 (+ d0 di)) mx)
  66.         (setq pt (vlax-curve-getpointatdist ln d0))
  67.    ) ;_ end of and
  68.      (entmakex        (list (cons 0 "CIRCLE")
  69.               (cons 10 pt)
  70.               (cons 40 0.05)
  71.               (cons 8 "0")
  72.         ) ;_ end of list
  73.      ) ;_ end of entmakex
  74.    ) ;_ end of while
  75. ) ;_ end of foreach
  76. (setq sset (ssget "_W" point1 point2 '((0 . "LINE"))))
  77. (command "_.erase" sset "")
  78. (OffsetCircles)
  79. (command "_.ZOOM" "p")
  80. (setvar 'osmode osn)
  81. (vla-endundomark doc)
  82. ) ;_ end of defun
  83. (vl-load-com)
  84. ;| OFFSET CIRCLES|;
  85. (defun OffsetCircles (/ clay sset ent obj)
  86. (defun *error* (msg)
  87.    (if        (and msg
  88.      (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
  89. )
  90.      (princ (strcat "\nError: " msg))
  91.    )
  92.    (if        clay
  93.      (setvar 'clayer clay)
  94.    )
  95.    (princ)
  96. ) ;_ end of defun
  97. (setq        clay (getvar 'clayer))
  98. (if (not (tblsearch "LAYER" "CNC_DRILL-0.10-PLEX"))
  99.    (command "-layer"            "make"           "CNC_DRILL-0.10-PLEX"
  100.      "color"            "T"                   "255,127,0" "" "") ;_ end of command
  101. ) ;_ end of if
  102. (if (not (tblsearch "LAYER" "CNC_DRILL-0.30-CNTRSINK"))
  103.    (command "-layer"            "make"           "CNC_DRILL-0.30-CNTRSINK"
  104.      "color"            "T"                   "255,127,159" "" "") ;_ end of command
  105. ) ;_ end of if
  106. (setvar 'clayer clay)
  107. (if (setq sset (ssget "_W" point1 point2 '((0 . "CIRCLE") (40 . 0.05))))
  108.    (progn
  109.      (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex sset)))
  110. (vlax-put-property
  111.   (vlax-ename->vla-object ent)
  112.   'layer "CNC_DRILL-0.10-PLEX"
  113. ) ;_ end of vlax-put-property
  114. (setq obj (vlax-ename->vla-object ent))
  115. (vla-Offset obj 0.1)
  116. (vlax-put-property
  117.   (vlax-ename->vla-object (entlast))
  118.   'layer "CNC_DRILL-0.30-CNTRSINK"
  119. ) ;_ end of vlax-put-property
  120.      ) ;_ end of foreach
  121.    ) ;_ end of progn
  122. ) ;_ end of if
  123. (princ)
  124. ) ;_ end of defun
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:35:54 | 显示全部楼层
 
使用ActiveX偏移方法偏移到内部或外部的概念仅适用于具有确定“内部”的对象,如圆弧、圆和椭圆。当应用于多段线时,偏移方向取决于多段线的方向(即顺时针或逆时针)。
 
下面是一个示例,演示如何偏移到内部。
回复

使用道具 举报

16

主题

99

帖子

83

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
80
发表于 2022-7-5 18:43:38 | 显示全部楼层
谢谢李。
 
虽然我在拼凑代码片段并使其工作方面还不错,但你的例子远高于我的工资等级。
 
我的选择集始终是单个实体,因此我将解析您的代码,看看是否可以将该过程应用到我的lisp。。。
 
 
...如果你不介意的话。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 03:51 , Processed in 0.697303 second(s), 73 queries .

© 2020-2025 乐筑天下

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