Hsanon 发表于 2022-7-5 17:49:50

停车批准矩形

您好,我们的审批流程要求我们的汽车模块转换为各种颜色、线宽和图层的矩形。这些变化包括轿厢是在建筑高跷盖下还是在露天、地下室或一楼以上,以及轿厢是单层还是多层(两层)。
 
当我们在设计过程中放置汽车挡块时,它们会旋转/镜像/以所有角度放置等等。。。对于我来说(凭借我有限的autolisp经验和零视觉lisp经验),很难过滤出正确的块并找出它所面临的方向。然后用正确的颜色和线宽绘制矩形
 
请提供任何建议/支持??
 
附上了一张样品图,以澄清我的问题
停车位小。图纸

BIGAL 发表于 2022-7-5 18:00:32

我认为更重要的是,在绘制之前,要正确假设要使用哪个块,而不是在绘制之后。
 
不同的方法可能会将您的汽车挡块从另一个图形中带到正确的图层上,并放置在附近,然后使用“复制”或“更改特性”在使用后擦除。我们的DWT中有这个。
 
使用菜单选项工具选项板,选择正确的块,可能是lisp,用于重复旋转90等。

Hsanon 发表于 2022-7-5 18:08:09

谢谢Bigal
我想的更像李的大纲对象。。。。。在更大的选择中,我们可以过滤出汽车块(是的,我们可以为盖下的汽车/高跷外的汽车等使用不同的块),并有一个程序围绕其包裹矩形(具有正确的层/颜色/线宽)
可能的

danellis 发表于 2022-7-5 18:15:36

用以下两种方法之一重新定义块:
1) 将“批准的”矩形几何体添加到设计阶段放置的块中,并使用分层使其成为“批准的”或“设计”块;或
2) 在服务器上的某处保留每个块的“批准”版本。这些名称应该与您在设计阶段使用的名称(例如car、mlcp等)完全匹配。一旦图形获得批准,请转到“插入”,然后浏览,选择块的“批准”版本,当它询问您是否要重新定义块时,告诉它是的,以及所有更改为新样式的块。
 
 
dJE

Grrr 发表于 2022-7-5 18:19:54

为什么不编辑块本身:将其从汽车变成矩形,然后重命名。
或添加多个可见性状态。
或者制作一些矩形块并使用“替换块”lisp。
我只是在抛出可能适合你的选项!

Hsanon 发表于 2022-7-5 18:33:00

审批机构运行一些程序,从不同的层提取PLIN,并通过颜色、线宽和线型进行区分。这给了他们一些答案,让他们能够判断提交是否正确。
程序不接受块。
这就是为什么我需要用不同颜色/线宽的多段线来追踪我的标准汽车街区。。。。。
我可以用正确的图层/线宽辨认出不同的矩形块并分解它们,然后使用“连接”命令将线转换为柱脚,如果其他相邻块的线相互接触,则它们会连接在一起。
 
我试图找出一种过滤其他对象的方法&选择块,找出块插入层(让我知道所需pline的颜色/线宽),并自动使该pline矩形与块的角度/方向相同。
 
谢谢你的建议。。。。

Hsanon 发表于 2022-7-5 18:38:17

我只是在分配线宽/颜色后尝试分解块。它不会在爆炸时丢失线宽和多段线配置!!!
为什么我会有这样的印象,区块只剩下几行&所有其他信息都会从中删除????
 
现在,有人能建议一个好的“替换块”Lisp程序吗?????还是“在现有块上复制块”lisp???
找出原始块的层并匹配并将正确的矩形块插入正确的方向。。。。。。
原始块不需要删除,因为新块位于不同的层上。
(有许多不同类型的原始块需要更换,一个可以一起完成的例程会很好)
我所需要做的就是把方块炸开!!!呼!!!
 
谢谢你们的帮助。。。。有时候,在这个论坛上聊天会给你一些想法和解决方案!!!

Grrr 发表于 2022-7-5 18:49:38

我想问同样的问题,提供更详细的解释代码应该如何工作。
但我不知道是否可以为每个选定的块本地存储“复制”点的坐标。
 
我把这个放在工具箱里:
 
(defun c:Block-Replace (/ *error* blk f ss temp)
;; Replace multiple instances of selected blocks (can be different) with selected block
;; Size and Rotation will be taken from original block and original will be deleted
;; Required subroutines: AT:GetSel
;; Alan J. Thompson, 02.09.10

(vl-load-com)

(defun *error* (msg)
   (and f *AcadDoc* (vla-endundomark *AcadDoc*))
   (if (and msg (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*,")))
   (princ (strcat "\nError: " msg))
   )
)

(if
   (and
   (AT:GetSel
       entsel
       "\nSelect replacement block: "
       (lambda (x / e)
         (if
         (and
             (eq "INSERT" (cdr (assoc 0 (setq e (entget (car x))))))
             (/= 4 (logand (cdr (assoc 70 (tblsearch "BLOCK" (cdr (assoc 2 e))))) 4))
             (/= 4 (logand (cdr (assoc 70 (entget (tblobjname "LAYER" (cdr (assoc 8 e)))))) 4))
         )
            (setq blk (vlax-ename->vla-object (car x)))
         )
       )
   )
   (princ "\nSelect blocks to be repalced: ")
   (setq ss (ssget "_:L" '((0 . "INSERT"))))
   )
    (progn
      (setq f (not (vla-startundomark
                     (cond (*AcadDoc*)
                           ((setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
                     )
                   )
            )
      )
      (vlax-for x (setq ss (vla-get-activeselectionset *AcadDoc*))
      (setq temp (vla-copy blk))
      (mapcar (function (lambda (p)
                            (vl-catch-all-apply
                              (function vlax-put-property)
                              (list temp p (vlax-get-property x p))
                            )
                        )
                )
                '(Insertionpoint Rotation XEffectiveScaleFactor YEffectiveScaleFactor
                  ZEffectiveScaleFactor
               )
      )
      (vla-delete x)
      )
      (vla-delete ss)
      (*error* nil)
    )
)
(princ)
)

(defun AT:GetSel (meth msg fnc / ent good)
;; meth - selection method (entsel, nentsel, nentselp)
;; msg - message to display (nil for default)
;; fnc - optional function to apply to selected object
;; Ex: (AT:GetSel entsel "\nSelect arc: " (lambda (x) (eq (cdr (assoc 0 (entget (car x)))) "ARC")))
;; Alan J. Thompson, 05.25.10
(setvar 'errno 0)
(while (not good)
   (setq ent (meth (cond (msg)
                         ("\nSelect object: ")
                   )
             )
   )
   (cond
   ((vl-consp ent)
      (setq good (cond ((or (not fnc) (fnc ent)) ent)
                     ((prompt "\nInvalid object!"))
               )
      )
   )
   ((eq (type ent) 'STR) (setq good ent))
   ((setq good (eq 52 (getvar 'errno))) nil)
   ((eq 7 (getvar 'errno)) (setq good (prompt "\nMissed, try again.")))
   )
)
)

Hsanon 发表于 2022-7-5 18:52:48

它的辉煌。。。。。。
非常感谢区块更换计划。。。。
页: [1]
查看完整版本: 停车批准矩形