从已知点进入
我相信这很简单,但无法实现。我有一条折线,它将其分解,现在想在同一个拾取点选择新线,而不是拾取两次。在接下来的例行工作中需要一条线路。
Entsel可以使用一个点,但我不能让它使用返回的第一个Entsel点、字符串列表等 使用ENTLAST语句选择它-分解后,该行成为数据库中的最后一个实体。如果多段线仅由一条线完成,则效果良好。
对于多段多段线,可以记录分解前最后一个图元的名称,并在分解后解析新添加的项目,以找到最接近选择点的项目。
当做 或者可以使用:
(ssget MySelectionPoint)
当做 另一种方法:
(defun EntnextToEnd ( ent )
(if (setq ent (entnext ent))
(cons ent (EntnextToEnd ent))))
(defun c:test (/ ent eLast ss )
(if (setq ent (car (entsel)))
(progn
(setq eLast (entlast))
(command "_.explode" ent)
(setq ss (ssadd))
(mapcar
(function
(lambda ( e )
(ssadd e ss))) (EntnexttoEnd eLast))
(sssetfirst nil ss)))
(princ))
李
就连我也有同样的问题。
我想选择两条线,并再次使用这些相同的拾取点。它可以是entsel和getpoint的组合,也可以是entsel和getpoint的组合。这怎么可能实现?
请帮忙 您可以将拾取的点存储为变量,getpoint显然会返回拾取的点,而entsel返回一个两元素列表:
(<entityname> (x y z))
第二个元素是拾取点-但是请记住,拾取点是拾取框的中心,它不一定位于拾取的对象上。
李
该点也可以是“(0.0.0)如果用户最后发出“L”。
如。
Command: (entsel)
Select object: l
(<Entity name: 77831480> (0.0 0.0 0.0)) 在我看来,SSGET工作时,entsel似乎不允许自动选取点。
关于拾取上面的两条线不是问题,只需entsel并生成两个变量或ssget两个对象,就可以计算出线的中间点(ssget no pick point)。 (setq p (getpoint))
(setq ss (ssget p))
(setq e (ssname ss 0))
或
(nentselp (getpoint)) 嗨,伙计们,你们不讨厌当一些事情不起作用,你们看不到它的时候吗。
这是代码的一部分
(setq obj (entsel"\nPick back of kerb line"))
(setvar "osmode" 0)
(setq objtype (cdr (assoc 0 (entget (car obj)))))
(IF (or (= objtype "POLYLINE")(= objtype "LWPOLYLINE"))
(progn
(setq objpt (cadr obj))
(princ "\nNow exploding polyline that was picked :")
(command "explode" obj "")
(setq ss (ssget objpt))
(setq obj2 (entget (ssname ss 0)))
)
(setq obj2 (entget (car obj))) ; else is line
)
obj2在任何一种情况下都可以正常工作
再往前走,需要休息
(命令“break”pt15 pt16)
如果原始代码是一个ployline,然后分解,那么这不起作用,但是如果原始代码是一行,那么它可以完美地工作,如果我在命令提示符下运行此中断代码,它可以工作吗?
如果有任何想法,我们将不胜感激。其他人只要看一眼,就会立刻找到原因。
页:
[1]
2