寻找增加的LISP
大家好。我们有一个问题,我们认为可以用LISP解决。唯一的问题是,我才刚刚开始学习AutoLISP,这太离谱了。问题-我们正在尝试从道路导出数据,并且在数据提取时能够以某种方式对其进行排序。为了做到这一点,我们一直在对线条应用厚度。基本上是按我们希望的顺序排序1,2,3,4,5等。因此,当需要提取数据时,我们可以按层进行排序,然后按厚度进行排序。我们不得不手动点击每一行,输入厚度。我们希望加快这一进程。因此,我们认为LISP可以工作,它将在选定的第一行中添加1的厚度,然后在其后的每行中添加+1的厚度。
第二个方面是,我们还使用标高字段来定义上述路段沿线的建筑数量。这也将以与另一个完全相同的方式设置。单击一条线,它对高程(从1开始)为+1。我们需要能够通过高程来重置高程计数器,同时不开始增加厚度。如果你看附图,这方面的理由可能会更加明显,但如果我们有一段新的道路,基本上道路沿线的建筑数量会重置。
我们一直在寻找重置标高/建筑计数器的想法,如果用户单击的是构建块,而不是它知道的将标高/建筑重置为a的线。
谢谢你们在这方面提供的任何帮助。非常感谢!
厚度高程lisp。图纸 这只是一个想法,但如果您正在考虑从行中提取数据,为什么不将扩展数据附加到每一行?可以对其进行过滤和排序。
使用Tapatalk从my Pixel XL发送
我们喜欢每次点击+1的想法的原因是,当项目变得非常大时,我们必须做100次,有时是1000次。因此,点击每一行,然后手动输入一个值,使我们知道我们现在的位置。我们的目标是加快这一进程。希望我不会对你的建议不屑一顾。我只是不确定这是否能帮我们节省时间——除非我遗漏了什么,如果是的话,我道歉。 为此目的更改高程似乎是一个非常糟糕的主意。您正在Z方向上移动实体。例如,捕捉端点将变得不可预测。
因为我们在项目的这一阶段所做的一切都无关紧要。这仅用于获取骨料的批量。我们总是用提升来实现,但如果可以在lisp中创建扩展数据字段,我想这也太好了。 这里有一个简单的例子。。尽管我同意有更好的方法来解决这个问题。
(defun c:foo (/ e el w)
;; Not much error checking...
(if (and (not (initget 4))
(setq w (getint "\nEnter start width: "))
(setq el (getint "\nEnter start elevation: "))
)
(while (setq e (car (entsel "\nPick polyline: ")))
(entmod (append (entget e) (list (cons 43 w) (cons 38 el) (cons 62 w))))
(setq w(1+ w)
el (1+ el)
)
)
)
(princ)
) ronjon发布的内容将以一种更“自动化”的方式确切地告诉你现在正在做什么。
通过使用扩展数据,您可以向行中添加更多信息,例如类型、重量、价格。此外,通过使用ssget和过滤regapp名称,您可以更快地量化您想要的内容。如果你要处理成百上千条线路,为什么不让电脑尽可能多地做腿部工作呢。您甚至可以让AutoCAD将数据导出到word、excel、xml。。。。你的想象力是这样的极限。
使用Tapatalk从my Pixel XL发送 我的0.05美元,你需要一个什么是最后一个值检查,但看看代码,这只是几行在开始。如果厚度不大于0,则为Oh和a
发现了几分钟,100行可能需要一点时间,所以可以添加一个进度条,比如说选择100+
(defun set-thick ( /ss x)
(setq thick 0)
(setq ss (ssget (list ( cons 0 "*line"))))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(setq newthick (vla-get-thickness obj))
(if (< thick newthick)(setq thick newthick))
)
(alert (strcat "1st pass completed last number is " (rtos thick 2 0)))
(repeat (setq x (sslength ss))
(setq obj (vlax-ename->vla-object (ssname ss (setq x (- x 1)))))
(if (= 0.0 (vla-get-thickness obj))(vla-put-thickness obj (setq thick (+ thick 1))))
)
(alert (strcat "2nd pass completed last number is " (rtos thick 2 0)))
)
(set-thick)
页:
[1]