从中点开始的多段线比例
我创建了一个LISP例程,该例程将搜索模型空间中的所有块,并使用块插入点的dimscale向上或向下缩放它们。然而,我在其中一些块之间有多段线,我需要从块的中点开始缩放这些块,然后将其向下修剪。我对这个例程的目标是,在我们用这些块设计了一个系统后,我们发现我们需要一个不同的比例,我们可以运行这个例程来将所有的东西都缩放到新的比例(即在1/8“中设计所有东西,但需要改为3/32”)。
我需要找到一种方法,从中点缩放所有多段线,然后将其缩短,使其看起来正确。需要缩放的所有多段线位于同一图层SPRKVIEW上,但可能是不同的颜色或线型。
这是一张有三行的图片。最上面的一行是原来的1/8“,第二行显示了从中点放大到1/16”的所有内容,然后最下面的一行显示了完成例程并缩短普林斯后的外观。
我认为更改多段线的恒定宽度可以在不缩放多段线的情况下解决该问题。 这些方块是注释性的斗士吗?
我不这么认为。有标准块和带有属性的块。
如果你看我所附的图片,上图和下图中块之间的线的长度是不同的(3/32版本比1/8”短,因为块更大)。我只需要一种方法,从它们的中点缩放所有的线,然后将它们缩短到与新的块大小一致。一切都基于1/8”的标准比例,所以块测量12”。 因此,您根据所需的比例按比例缩放块?我建议您开始使用注释性,这将减少两个需要担心的实体。
但既然你们已经有了这些图纸,我们就需要做些工作。在当前代码上。是否提示缩放?
最好应该有一个变量来指示之前相对于新量表的量表。使用注释性,你有了过去和将来的基础-->“cannoscale”。
块之间的多段线是否永远不超过两个点?
我正在与HydraCAD合作,我只需要与他们建立的合作。基本上,它们将1/8“比例视为1=1或基准比例(插入比例为1的块测量12”,就像视口中的1/8”比例一样)。
我有一个带有提示窗口的代码设置,该窗口有一个下拉菜单,用于选择要将图形设置为的比例,以及一条显示图形当前比例的线。还有一个按钮,您可以单击该按钮,显示当前图形比例、您所在的空间(模型或图纸)以及上次编辑图形的人员和时间。绘图比例部分很好,另一段代码可以将我的所有块向上或向下缩放到我想要的任何比例,我只需要一种方法来缩放柱脚,并将它们缩短到与不同大小的块一致。所有柱脚都是一个2点的整体。
哎呀,忘了我刚才说的。我想我会这样做。缩小(而不是向上)pline,然后更改wdith。比例是否始终为2?
编辑:这里已经很晚了,斗士,我明天会查一下这个帖子。
基本上,所有内容都基于dimscale,即插入所有内容的方式,包括从我的代码和工具选项板中插入的内容,其中我们有所有的标准洒水喷头和注释等。dimscale为1将块的比例设置为1,这与视口中的1/8”比例相同,这是按比例绘制图形时所需的大小(3/32”是dimscale 1.33,1/16”是dimscale 2,3/16”是dimscale 667,等等)。柱脚的宽度很好,因为随着管道尺寸的缩放,文本之间的空间会发生变化,柱脚宽度正好适合。我只需要能够选择所有制作“漂亮管道”的管道,从其中点开始缩放,然后从末端将其缩短,以匹配喷头的新边界。
我希望这能更好地回答问题。一切工作的方式基本上是注释比例的手动版本,因此,如果必须为同一区域显示不同的尺寸,则每个比例的不同图层上都有尺寸,只需冻结视口中不需要的内容,尽管我们不必这样做。我们总是有一个总体规划,可以是不同的规模,然后不同地区的放大计划,对于一个特定的项目总是相同的规模。
***编辑***
谢谢pBe的帮助。我知道这有点让人困惑,需要什么以及如何设置,但只要把它想象成手动缩放图形和其中的一切。我们将建筑师的基础外部参照到FP主文件中,这样我们可以将我们的工作放在建筑背景之上,然后将该文件与我们的图纸一起外部参照到图形中(每张图纸一个图形文件,而不是一个带有多个选项卡/图纸的文件。我知道你在想什么,但我在一家建筑/工程公司,这就是一切的设置方式)
这不是我遇到的问题,这是因为块的新大小而必须调整的线的长度,正如你在顶部的图片中看到的那样。
HydraCAD有一个名为“Pretty Pipe”的程序可以运行,该程序可以复制所有构造线(图中的黄线),将副本转换为具有指定宽度的柱脚,然后将其缩短以匹配柱头。顶部的图片有一条黄线,从块的中心到中心,这是获得管道长度的地方。当你在图纸空间中时,该层会消失,因此当你绘制图形时,为了清晰起见,只有“漂亮的管道”会显示出来。问题是,当头部缩放到不同的尺寸时,漂亮的管道保持相同的长度,但正如您可以想象的那样,如果缩放得更小,则头部和管道之间会有间隙,如果缩放得更大,则会重叠。 为了提供一种替代方法,可以缩放圆,然后使用类似的方法来构造间断线:
;; Connect Circles-Lee Mac 2012
;; Constructs lines to connect a set of circles using the shortest line
;; at each iteration (Variation of Shortest Path Problem).
;; Implements a non-optimal greedy algorithm.
(defun c:cc ( / c d e i l m n s z )
(if (setq s (ssget '((0 . "CIRCLE"))))
(progn
(repeat (setq i (sslength s))
(setq e (entget (ssname s (setq i (1- i))))
l (cons (list (cdr (assoc 10 e)) (cdr (assoc 40 e))) l)
)
)
(setq m (distance (caar l) (caadr l))
c (car l)
)
(foreach x (setq z l)
(foreach y (setq z (cdr z))
(if (< m (setq n (distance (car x) (car y))))
(setq m n c x)
)
)
)
(while (setq l (vl-remove c l))
(setq m (distance (car c) (caar l))
d (car l)
)
(foreach x (cdr l)
(if (< (setq n (distance (car x) (car c))) m)
(setq m n d x)
)
)
(entmake
(list
'(0 . "LINE")
(cons 10 (polar (car c) (angle (car c) (car d)) (cadr c)))
(cons 11 (polar (car d) (angle (car d) (car c)) (cadr d)))
)
)
(setq c d)
)
)
)
(princ)
)
稍后需要“修复”宽度分配。我需要柱脚的基线宽度。现在是2.0
编辑:更改附着图形上多段线的宽度以查看效果。[需要改进,也许等OP决定继续时]
编辑:代码更新
排除锁定图层和/或外部参照。
为Pline延伸/修剪值添加值
样品图纸
页:
[1]
2