为总面积选择类似的图案填充
我想知道如果我选择相似的,是否有一种简单的方法来获得这些舱口的总面积。我一点运气都没有我知道要做到这一点需要很长的时间,在每一个边界上重新关联边界,然后删除图案填充
是否有一个例程,我可以选择所有的图案,并将它们转换为一个图案填充,从而获得具有相同源图案填充图案的区域?只是头脑风暴而已(defun c:hbound (/ *error* i p s v x)
(defun *error* (msg)
(mapcar '(lambda (x) (setvar (car x) (cdr x))) v)
(if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*"))
(princ (strcat "\nError: " msg))
)
(princ)
)
(setq i 0)
;; Tested in AutoCAD 2018 - RJP 6.20.2018
;; Creates boundaries on layers that match the hatch pattern name
(if (setq s (ssget '((0 . "hatch"))))
(progn (setq
v (mapcar '(lambda (x) (cons x (getvar x))) '("clayer" "cmdecho" "hpseparate" "hpbound"))
)
(setvar 'cmdecho 0)
(setvar 'hpseparate 1)
(setvar 'hpbound 1)
(foreach x (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
(if (null (tblobjname "layer" (setq p (cdr (assoc 2 (entget x))))))
(entmakex (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(70 . 0)
(cons 2 p)
'(6 . "Continuous")
(cons 62 (setq i (1+ i)))
)
)
)
(setvar 'clayer p)
(command "_hatchgenerateboundary" x "")
)
(mapcar '(lambda (x) (setvar (car x) (cdr x))) v)
)
)
(princ)
) 嘿,谢谢你尝试一下。我有好消息要告诉你。我想你解决了我的问题!(和往常一样)在2017年使用这个程序,我似乎没有得到与你在动画照片中相同的结果。我的只是在屏幕左侧显示一个红色三角形。奇怪的 奇怪…它在17年到18年对我有效。再试一次。改变了几个变量。 更奇怪的是......仍然得到同样的东西。让我重置我的CAD。也许我这端有什么东西。
我保存了它,然后审核了它。
Command: _QSAVE Drawing saved in AutoCAD 2013 format.
Command: auidt Unknown command "AUIDT".Press F1 for help.
Command: *Cancel*
Command: *Cancel*
Command: audit
Fix any errors detected? : y
Auditing Header
Auditing Tables
Auditing Entities Pass 1
Pass 1 400 objects auditedAECC_ALIGNMENT_STYLE (AcDbSymbolTableRecord)
eNullObjectId Standard
AECC_ALIGNMENT_STYLE (AcDbSymbolTableRecord)
eNullObjectId Standard
AECC_ALIGNMENT_STYLE (AcDbSymbolTableRecord)
eNullObjectId Standard
AECC_ALIGNMENT_STYLE (AcDbSymbolTableRecord)
eNullObjectId Standard
Pass 1 3400 objects audited
Auditing Entities Pass 2
Pass 2 3400 objects audited
Auditing Blocks
1 Blocks audited
Auditing AcDsRecords
Total errors found 4 fixed 4
Erased 0 objects
Command:
Command: (LOAD "C:/Users/rberger/Desktop/tmp.lsp") C:HBOUND
Command: hbound
Select objects: Specify opposite corner: 18 found
Select objects:
*Invalid selection*
Expects a point or Window/Last/Crossing/BOX/ALL/Fence/WPolygon/CPolygon/Group/Add/Remove/Multiple/Previous/Undo/AUto/SIngle
Select hatch objects: *Cancel*
这很奇怪..这就像您尝试选择的舱口未被识别一样。( *无效选择* ) 哇…我只是重置了一切(甚至注册表和Appdata)。下载您的绘图。讨厌的人。 必须是一些变量..这就是为什么我很少使用命令调用。 嘿,我很感激你的帮助!你做得很好!我想我的CAD不喜欢我。哈哈 我确实偶然发现了这个代码
(DEFUN C:RB () (setvar "osmode" 0) (setq ss1 (ssget '((0 . "HATCH")))) (setq len1 (sslength ss1) n1 0) (while (< n1 len1) (setq
ename1 (ssname ss1 n1)) (COMMAND "HATCHEDIT" ename1 "B" "" "Y") (setq n1 (1+ n1)) ) ) ;end RB
这可以取代_HATCHGENERATEBOUNDARY命令吗?
我认为这可能是我的问题。 您可以尝试:
(command "-hatch edit " x " Boundary " " Polyline " " Yes ")
代替:
(command " _ hatchgenerateboundary " x " ")
页:
[1]
2