CraneGuy 发表于 2022-7-6 15:13:38

Lisp创建自定义形状

你好!希望有人能帮我。
 
我必须从给定的数据中创建多个简单的形状。手动操作很容易,但非常烦人。
 
铁路部门向我们提供了信息,以显示铁路负载可以通过的“间隙窗口”。该窗口反映了铁路沿线的障碍物。
 
给出的数据是轨道上方的高度和给定高度处的宽度。
 
我现在的过程是选择一个基点,画一条垂直于给定高度的线,然后在给定宽度水平画另一条线。然后我用中心把手把线拉到垂直线的顶部。
 
我重复上述步骤,直到所有直线都就位,然后用多段线(从基点)连接端点(见附件)
 
然后删除内部水平线和垂直线。
 
这给我留下了一个轮廓,我可以放置在轨道车的端部标高和负载上。
 
数据以以下格式给出(ATR表示轨迹上方):
 
16英尺11英寸。atr 08英尺02英寸。宽的
16英尺08英寸。atr 09英尺02英寸。宽的
16英尺07英寸。atr 11英尺08英寸。宽的
16英尺02英寸。atr 12英尺02英寸。宽的
14英尺04英寸。atr 12英尺06英寸。宽的
05英尺04英寸。atr 12英尺06英寸。宽的
05英尺03英寸。自动条码读取器12英尺00英寸。宽的
04英尺01英寸。自动条码读取器12英尺00英寸。宽的
03英尺05英寸。atr 11英尺06英寸。宽的
03英尺04英寸。atr 10英尺02英寸。宽的
02英尺05英寸。atr 10英尺01英寸。宽的
 
 
是否可以创建一个lisp例程来请求这些数字并生成多段线?
 
 
提前感谢!
间隙窗口。pdf

fixo 发表于 2022-7-6 15:44:42

我不明白你到底需要什么
也许这个程序会有所帮助


(defun C:shw(/ data fdesc fname lastp pline points tmp)
(setq fname (getfiled "Select data file:" "C:\\" "txt;csv;dat" 4))
(setq fdesc (open fname "r"))
(while (setq tmp (read-line fdesc))
   (setq data (cons tmp data))
   )
(close fdesc)
(princ data)
(if data
   (progn
   (setq data (mapcar (function (lambda (x) (vl-string-subst "," "atr" x)))
               (reverse data)))

   (setq points
   (mapcar (function
             (lambda (x)

               (setq lastp (substr x (+ 4 (vl-string-search " ," x))))
               (list
                   (+ (atof x)
                      (/ (atof (substr x
                                     (+ (vl-string-search " ft." x) 5)
                                     (+ 3 (vl-string-search " in. " (car data)))))
                       12))

                   (+ (atof lastp)
                      (/ (atof (substr lastp
                                     (+ (vl-string-search " ft." lastp) 5)
                                     (+ 3 (vl-string-search " in. " lastp))))
                       12)))))
             data)
    )
   (setvar "osmode" 0)
   (command "._pline")
   (mapcar 'command points)
   (command "")
   (setq pline (entlast))
   (command "._zoom" "_OB" pline "")
   (command "._zoom" ".6x")
   (alert "Pick two mirror points, use snap")
   (command ".mirror" pline "" pause pause "_n")
   (setq mirr (entlast))
   (alert "Pick two line points to close contour, use snap")
   (command "._line" pause pause "")
   (setq line (entlast))
   (command "._pedit" "_M" pline mirr line "" "J" "" "")

   (command "._regen")
   )
   (alert "Something wrong")
   )
(princ)
)
(princ "Type SHW to execute")
(princ)

 
~'J'~

CraneGuy 发表于 2022-7-6 15:54:22

这是非常惊人的代码,谢谢。
 
我基本上需要它做的是在附加的PDF中创建红色轮廓。
 
数字是特定高度的宽度(黑线)。随后绘制多段线(红色),以连接每条线的端点;这将创建连接到基点的轮廓。
 
基点将为0高度和0宽度。
 
我运行了你的例程,它创建了一个形状。问题是我不能选择镜像点。代码可以自动选择基点。此外,第一个维度是4“,而不是10'-1”
 
此外,大纲在其一侧。
 
我希望你明白我在找什么。到目前为止,你帮了我很大的忙,谢谢!

fixo 发表于 2022-7-6 16:15:25

哦,是的,这是因为我的愚蠢,
但我一点也不明白
你能在你将要去的地方创造一些划痕吗
按书写顺序画出所有要点
根据其位置在文本文件中?
换句话说,每一行
文本文件数据?
对不起,我英语不好
 
~'J'~
页: [1]
查看完整版本: Lisp创建自定义形状