ronjonp 发表于 2004-10-6 19:16:04

宏帮助

您好,
我在这里开发了这个小宏(见下文),这真的很酷。
如果您在Paperspace中,则可以启动此宏,选择您的mview视口,它将将其复制到模型空间中作为块参考,并以适当的乘数为您放大,在本例中为48,因为我以1/4“=1'
打印无论如何,粘贴块部分完成后,它希望将其放在当前层上。这并不好,所以我需要告诉AutoCAD在粘贴插入之前使缺点保持最新状态。
在此宏的末尾,需要更多代码来告诉 AutoCAD 使第 0 层成为当前图层。 我确实尝试过 -layer;s;0;;最后,但我仍然没有运气。有什么建议吗?
谢谢
**** Hidden Message *****

Eloquintet 发表于 2004-10-6 19:56:16


^C^Ccopyclip;\;(setvar "tilemode" 1);-layer;m;defpoints;;pasteblock;scale;48;\(setvar 'clayer "0");
我将图层设置更改为图层制作,以防图层不存在。我还在块缩放后加了一条斜线以允许插入,然后图层设置为0。罗恩

Eloquintet 发表于 2004-10-6 20:22:26


^C^CCopclip;\;(setvar"tilemode"1);-Layer; s; defpoint;; pasteblock; size; 48;(setvar'clayer"0");

嘿Ron,
这很好,但不完全是。如果我按照您的建议执行以下操作,那么我不再在Model空间中被提示插入点,而是随机删除块。如果我再做一次,那么它会将下一个放在最后一个之上,依此类推。你能想出一种方法来写它,这样我仍然会被提示插入点吗?
谢谢
Mark

Eloquintet 发表于 2004-10-6 20:26:52

嘿,罗恩
,我错过了48年底的反斜杠;
48;\(塞特瓦尔的克莱尔“0”)是完美的!
它现在像一个魅力一样工作
嘿!通过使用此功能,您将始终在模型空间中为您设置最外层的绘图限制
,非常感谢!
马克

Eloquintet 发表于 2004-10-7 08:23:14

ml只是出于好奇,你为什么不试试这个,它似乎是一个更好的主意,让它画一个pline而不是创建一个块,如果我正确地阅读你的帖子,无论如何尝试这对于你想做的事情来说都很好。
               ;Tip1687:   VPLIM.LSP   Pspace Limits in Mspace (c)2001, Murray Clack
               ;VPLIM.lsp draws the limits of a Paperspace Viewport Boundary in MODELSPACE
               ;VP - Get ViewPort object
               ;HT - Get Outside HeighT of Viewport
               ;WD - Get Oustide WiDth of Viewport
               ;VN - Get Viewport Number
               ;CTR - Get CenTeR of Viewport
               ;CTRX - Caluculate X of Viewport CenTeR
               ;CTRY - Caluculate Y of Viewport CenTeR
               ;VS - Get View Size of viewport
               ;XP - Calculate XP factor of viewport
               ;IW - Calculate Width of viewport
               ;BL - Calculate Bottom Left corner of viewport
               ;BR - Calculate Bottom Right corner of viewport
               ;TR - Calculate Top Right corner of viewport
               ;TL - Calculate Top Left corner of viewport
               ;PW - Save PlineWid
               ;OS - Save OSmode
               ;start function and define variables
(defun
   C:VPL
          (/ VP HT   WD VN CTR CTRX CTRY VS XP IW BL   BR TR TL PW OS)
               ;turn off command echoing
(setvar "cmdecho" 0)
               ;save current layer as "clay"
(setq clay (getvar 'clayer))
               ;make current layer defpoints
(command "_.layer" "m" "Defpoints" "")
               ;enter pspace
(command ".pspace")
               ;select viewport boundary
(setq   VP
    (entget
      (car
      (entsel
          "\nSelect Viewport to Draw Boundary
             in "
      ) ;_ end of entsel
      ) ;_ end of car
    ) ;_ end of entget
) ;_ end of setq
               ;Get Viewport height with
(setq HT (cdr (assoc 41 VP)))
               ;Get Viewport width with
(setq WD (cdr (assoc 40 VP)))
               ;Get Viewport Number
(setq VN (cdr (assoc 69 VP)))
               ;enter mspace
(command ".mspace")
               ;set correct viewport
(setvar "cvport" VN)
               ;set UCS to View
(command ".ucs" "v")
               ;Get VIEWCTR store as CTR
(setq CTR (getvar "viewctr"))
               ;Get X of CTR
(setq CTRX (car CTR))
               ;Get Y of CTR
(setq CTRY (cadr CTR))
               ;Get inside Viewport height
(setq VS (getvar "viewsize"))
               ;Get XP Factor with HeighT / View Size
(setq XP (/ HT VS))
               ;Get inside width of Viewport by
(setq IW (* (/ VS HT) WD))
               ;Find four corners of Viewport
(setq BL (list (- CTRX (/ IW 2)) (- CTRY (/ VS 2))))
(setq BR (list (+ CTRX (/ IW 2)) (- CTRY (/ VS 2))))
(setq TR (list (+ CTRX (/ IW 2)) (+ CTRY (/ VS 2))))
(setq TL (list (- CTRX (/ IW 2)) (+ CTRY (/ VS 2))))
               ;Save current pline width
(setq PW (getvar "plinewid"))
               ;Set Pline width to zero
(setvar "plinewid" 0)
               ;Save current osmode
(setq OS (getvar "osmode"))
               ;Draw pline inside border
(command ".pline" BL BR TR TL "c")
               ;Restore pline width back
(setvar "plinewid" PW)
               ;Restore UCS back
(command ".ucs" "p")
               ;Restore osmode
(setvar "osmode" OS)
               ;Restore curernt layer
(setvar "clayer" clay)
               ;Clean up command prompt
(princ)
               ;Go Back To Papserspace
(command ".pspace")
)               ;The End!

Eloquintet 发表于 2004-10-7 18:49:27

谢谢你丹。
我非常喜欢将实际的mview复制到模型中并转换为块引用。我只关心如果人们分解它,那么它将恢复到一个视口。也许VBA的一个反应堆可以解决这个问题。
我会坚持使用这个lsp程序并尝试一下
再次感谢
Mark

Eloquintet 发表于 2004-10-8 11:07:35

您可能对此也感兴趣
http://www.cadnovation.com/en/Prod/mvport/mvport.asp

Eloquintet 发表于 2004-10-8 18:12:04

它看起来很酷,但我和另一个人正在构建一堆工具,这些工具将真正有助于简化所有冗余并减少CAD中出错的机会
我完全愿意接受建议。
再次感谢
马克
页: [1]
查看完整版本: 宏帮助