宏帮助
您好,我在这里开发了这个小宏(见下文),这真的很酷。
如果您在Paperspace中,则可以启动此宏,选择您的mview视口,它将将其复制到模型空间中作为块参考,并以适当的乘数为您放大,在本例中为48,因为我以1/4“=1'
打印无论如何,粘贴块部分完成后,它希望将其放在当前层上。这并不好,所以我需要告诉AutoCAD在粘贴插入之前使缺点保持最新状态。
在此宏的末尾,需要更多代码来告诉 AutoCAD 使第 0 层成为当前图层。 我确实尝试过 -layer;s;0;;最后,但我仍然没有运气。有什么建议吗?
谢谢
**** Hidden Message *****
^C^Ccopyclip;\;(setvar "tilemode" 1);-layer;m;defpoints;;pasteblock;scale;48;\(setvar 'clayer "0");
我将图层设置更改为图层制作,以防图层不存在。我还在块缩放后加了一条斜线以允许插入,然后图层设置为0。罗恩
^C^CCopclip;\;(setvar"tilemode"1);-Layer; s; defpoint;; pasteblock; size; 48;(setvar'clayer"0");
嘿Ron,
这很好,但不完全是。如果我按照您的建议执行以下操作,那么我不再在Model空间中被提示插入点,而是随机删除块。如果我再做一次,那么它会将下一个放在最后一个之上,依此类推。你能想出一种方法来写它,这样我仍然会被提示插入点吗?
谢谢
Mark 嘿,罗恩
,我错过了48年底的反斜杠;
48;\(塞特瓦尔的克莱尔“0”)是完美的!
它现在像一个魅力一样工作
嘿!通过使用此功能,您将始终在模型空间中为您设置最外层的绘图限制
,非常感谢!
马克 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!
谢谢你丹。
我非常喜欢将实际的mview复制到模型中并转换为块引用。我只关心如果人们分解它,那么它将恢复到一个视口。也许VBA的一个反应堆可以解决这个问题。
我会坚持使用这个lsp程序并尝试一下
再次感谢
Mark 您可能对此也感兴趣
http://www.cadnovation.com/en/Prod/mvport/mvport.asp 它看起来很酷,但我和另一个人正在构建一堆工具,这些工具将真正有助于简化所有冗余并减少CAD中出错的机会
我完全愿意接受建议。
再次感谢
马克
页:
[1]