woodman78 发表于 2022-7-6 12:18:55

绘图反应堆

我的办公室里主要有A1版的图纸。然而,我们确实在A3处绘制图纸,用于报告等。我有一个动态块设置,可以选择图纸的比例和纸张尺寸,例如1:2500@A1.我发现,他们创建了一个vp的副本,然后用修正的比例将动态块更改为A3。我认为这是一场灾难。如果他们需要对图纸空间中的任何内容进行更改,而忘记对A3进行更改,或者反过来,我们可能会对图纸中的差异持开放态度,从而提出索赔。
 
当使用页面设置为A1或A3设置绘图设置时,是否可以设置反应器,以调整比例以适应。我正试图让这一切自动化,以阻止那些家伙把事情搞得一团糟。
 
非常感谢您的帮助!!

woodman78 发表于 2022-7-6 12:24:43

任何人对此有任何想法:(

SteveK 发表于 2022-7-6 12:30:52

对不起,我很难理解你想做什么:
根据页面设置是否设置为A1或A3,是否要缩放特定块或更改打印比例?你想如何整合反应堆?
如果更改了打印比例(在活动布局上):
; Change plot scale based on papersize
(defun c:changeScale (/ actLay papSize)
(setq actLay (vla-get-activelayout (vla-get-activedocument
                                                (vlax-get-acad-object)))
   papSize (vla-get-CanonicalMediaName actLay))
(Cond ((eq papSize "A1")
    (vla-put-StandardScale actLay acVpCustomScale)
    (vla-setcustomscale actLay 1 2500)
    )
   ((eq papSize "A3")
    (vla-put-StandardScale actLay acVpCustomScale)
    (vla-setcustomscale actLay 1 1250)
    )
   )
)

SteveK 发表于 2022-7-6 12:34:06

在Alan(修改后的)Plot反应堆程序中:
;;; ------------------------------------------------------------------------
;;;    PlotSheetScaleReactor.lsp v1.0
;;;    (PlotSheetCountReactor modified by SK)
;;;
;;;    Copyright© 10.02.09
;;;    Alan J. Thompson (alanjt)
;;;    alanjt
;;;
;;;    Permission to use, copy, modify, and distribute this software
;;;    for any purpose and without fee is hereby granted, provided
;;;    that the above copyright notice appears in all copies and
;;;    that both that copyright notice and the limited warranty and
;;;    restricted rights notice below appear in all supporting
;;;    documentation.
;;;
;;;    The following program(s) are provided "as is" and with all faults.
;;;    Alan J. Thompson DOES NOT warrant that the operation of the program(s)
;;;    will be uninterrupted and/or error free.
;;;
;;;
;;;    Revision History:
;;;
;;; ------------------------------------------------------------------------

(vl-load-com)

;; activate reactor
(or PlotSheetScale:Reactor
   (setq PlotSheetScale:Reactor
          (vlr-command-reactor
            nil
            '((:vlr-commandWillStart . PlotSheetScale:Procedure)
             )
          ) ;_ vlr-command-reactor
   ) ;_ setq
) ;_ or

;; procedure
(defun PlotSheetScale:Procedure (#Call #Info / actLay papSize)
(cond
   ((wcmatch (strcase (car #Info)) "*PLOT*")
    (setq actLay (vla-get-activelayout (vla-get-activedocument
                     (vlax-get-acad-object)))
      papSize (vla-get-CanonicalMediaName actLay))
    (Cond ((eq papSize "A1")
       (vla-put-StandardScale actLay acVpCustomScale)
       (vla-setcustomscale actLay 1 2500)
       )
      ((eq papSize "A3")
       (vla-put-StandardScale actLay acVpCustomScale)
       (vla-setcustomscale actLay 1 1250)
       )
      )
    )
) ;_ cond
) ;_ defun

woodman78 发表于 2022-7-6 12:35:41

我会尽量解释得更好一点。我想做的和你说的相反。基本上,我有一个A1模板设置的图纸,因为这是我们主要用于我们的图纸大小。我有一个页面设置,用于打印到A1的绘图仪。这一切都很好。但是当我们需要在报告的背面或类似的地方绘制一张A3的图时,问题就出现了。这些家伙最近一直在这里做很多事情,直到我发现是复制布局并在布局名称的末尾添加A3。然后,他们将改变我创建的动态块的比例,该块链接到比例尺,以读取A3。然后,他们将使用A1到A3设置的页面设置。问题是他们正在复制图纸,因此如果必须进行更改,那么在一些复制的布局中肯定会错过。
 
无论如何,我要的是一个绘图反应堆,将允许使用一个布局。如果有人想在A3上打印,那么他们选择A1到A3页面设置,这会将打印比例更改为1:2。然后我想改变动态比例尺块的可视性状态来反映这一点。
 
听起来很复杂,我知道。。。。。

alanjt 发表于 2022-7-6 12:42:46

英雄联盟
我认为你已经删除了所有组成这个阴谋的东西。你可以从中删除我的所有信息。

woodman78 发表于 2022-7-6 12:45:18

对不起,我不明白

SteveK 发表于 2022-7-6 12:49:44

尽管如此,我复制了你的作品,所以我想我会把它都保存在那里
 
对不起,woodman,我正试图以一步一步的形式思考您想要的lisp(因为这就是代码):
[列表=1]
[*]当有人去绘图时,你希望反应堆调用lisp。
[*]此lisp将检查页面设置是A1还是A3?
[*]然后将A3的绘图比例更改为1:2,并且??对于A1?
[*]它还将缩放动态块(在这种情况下,我需要块名等-我知道如何缩放块,但我不确定如何缩放动态块-这可能超出我的想象,其他人可以随意插手)。
这接近你想要的吗?在这种情况下,我在上一篇文章中尝试为你做1-3,这只是我没有做的方块比例。

alanjt 发表于 2022-7-6 12:53:17

 
不用担心,我很感激。

woodman78 发表于 2022-7-6 12:57:47

SteveK,
我希望我能让别人理解我的意思,所以请宽容我。我们有一个用于A1图纸的大幅面HP绘图仪。我们的大多数图纸都是以A1格式创建的,因为这是最有可能用于打印的格式。
我们还有一台HP A3/A4激光打印机。我为打印机和绘图仪创建了不同的页面设置。如果您选择A1,则它将大幅面绘图仪的所有打印设置设置为A1打印,因此打印比例设置为1等。如果您选择页面设置以A3打印图形(正如我们经常对报告等所做的那样),则所有这些设置都设置为1:2等打印比例。
 
我希望做的是得到一个反应器,它检测到我已经选择了要绘制在A1或A3上的图纸,并设置一个动态块来指示A1或A3。但也可以采用1:500的比例,如果绘图比例为1:2,则将动态块中的比例减半为1:250。
 
我希望这能解释。。。。
谢谢
页: [1] 2
查看完整版本: 绘图反应堆