mstg007 发表于 2017-6-20 07:35:16

为总面积选择类似的图案填充

我想知道如果我选择相似的,是否有一种简单的方法来获得这些舱口的总面积。我一点运气都没有
我知道要做到这一点需要很长的时间,在每一个边界上重新关联边界,然后删除图案填充
是否有一个例程,我可以选择所有的图案,并将它们转换为一个图案填充,从而获得具有相同源图案填充图案的区域?只是头脑风暴而已(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)
)

Rob... 发表于 2017-6-20 08:03:46

嘿,谢谢你尝试一下。我有好消息要告诉你。我想你解决了我的问题!(和往常一样)在2017年使用这个程序,我似乎没有得到与你在动画照片中相同的结果。我的只是在屏幕左侧显示一个红色三角形。奇怪的

ronjonp 发表于 2017-6-20 09:14:07

奇怪…它在17年到18年对我有效。再试一次。改变了几个变量。

cadtag 发表于 2017-6-20 11:23:10

更奇怪的是......仍然得到同样的东西。让我重置我的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*

ronjonp 发表于 2017-6-20 12:18:49

这很奇怪..这就像您尝试选择的舱口未被识别一样。( *无效选择* )

mstg007 发表于 2017-6-21 07:56:05

哇…我只是重置了一切(甚至注册表和Appdata)。下载您的绘图。讨厌的人。

ronjonp 发表于 2017-6-21 08:51:19

必须是一些变量..这就是为什么我很少使用命令调用。

mstg007 发表于 2017-6-21 09:23:34

嘿,我很感激你的帮助!你做得很好!我想我的CAD不喜欢我。哈哈

ronjonp 发表于 2017-6-21 09:36:41

我确实偶然发现了这个代码
(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命令吗?
我认为这可能是我的问题。

mstg007 发表于 2017-6-21 09:43:39

您可以尝试:
(command "-hatch edit " x " Boundary " " Polyline " " Yes ")

代替:
(command " _ hatchgenerateboundary " x " ")
页: [1] 2
查看完整版本: 为总面积选择类似的图案填充