乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 106|回复: 3

[编程交流] Lisp创建自定义形状

[复制链接]

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 15:13:38 | 显示全部楼层 |阅读模式
你好!希望有人能帮我。
 
我必须从给定的数据中创建多个简单的形状。手动操作很容易,但非常烦人。
 
铁路部门向我们提供了信息,以显示铁路负载可以通过的“间隙窗口”。该窗口反映了铁路沿线的障碍物。
 
给出的数据是轨道上方的高度和给定高度处的宽度。
 
我现在的过程是选择一个基点,画一条垂直于给定高度的线,然后在给定宽度水平画另一条线。然后我用中心把手把线拉到垂直线的顶部。
 
我重复上述步骤,直到所有直线都就位,然后用多段线(从基点)连接端点(见附件)
 
然后删除内部水平线和垂直线。
 
这给我留下了一个轮廓,我可以放置在轨道车的端部标高和负载上。
 
数据以以下格式给出(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
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:44:42 | 显示全部楼层
我不明白你到底需要什么
也许这个程序会有所帮助
  1. (defun C:shw  (/ data fdesc fname lastp pline points tmp)
  2. (setq fname (getfiled "Select data file:" "C:\" "txt;csv;dat" 4))
  3. (setq fdesc (open fname "r"))
  4. (while (setq tmp (read-line fdesc))
  5.    (setq data (cons tmp data))
  6.    )
  7. (close fdesc)
  8. (princ data)
  9. (if data
  10.    (progn
  11.      (setq data (mapcar (function (lambda (x) (vl-string-subst "," "atr" x)))
  12.                  (reverse data)))
  13.      (setq points
  14.      (mapcar (function
  15.                (lambda (x)
  16.                  (setq lastp (substr x (+ 4 (vl-string-search " ," x))))
  17.                  (list
  18.                    (+ (atof x)
  19.                       (/ (atof (substr x
  20.                                        (+ (vl-string-search " ft." x) 5)
  21.                                        (+ 3 (vl-string-search " in. " (car data)))))
  22.                          12))
  23.                    (+ (atof lastp)
  24.                       (/ (atof (substr lastp
  25.                                        (+ (vl-string-search " ft." lastp) 5)
  26.                                        (+ 3 (vl-string-search " in. " lastp))))
  27.                          12)))))
  28.              data)
  29.     )
  30.      (setvar "osmode" 0)
  31.      (command "._pline")
  32.      (mapcar 'command points)
  33.      (command "")
  34.      (setq pline (entlast))
  35.      (command "._zoom" "_OB" pline "")
  36.      (command "._zoom" ".6x")
  37.      (alert "Pick two mirror points, use snap")
  38.      (command ".mirror" pline "" pause pause "_n")
  39.      (setq mirr (entlast))
  40.      (alert "Pick two line points to close contour, use snap")
  41.      (command "._line" pause pause "")
  42.      (setq line (entlast))
  43.      (command "._pedit" "_M" pline mirr line "" "J" "" "")
  44.      (command "._regen")
  45.      )
  46.    (alert "Something wrong")
  47.    )
  48. (princ)
  49. )
  50. (princ "Type SHW to execute")
  51. (princ)

 
~'J'~
回复

使用道具 举报

2

主题

5

帖子

3

银币

初来乍到

Rank: 1

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

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 16:15:25 | 显示全部楼层
哦,是的,这是因为我的愚蠢,
但我一点也不明白
你能在你将要去的地方创造一些划痕吗
按书写顺序画出所有要点
根据其位置在文本文件中?
换句话说,每一行
文本文件数据?
对不起,我英语不好
 
~'J'~
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 18:13 , Processed in 0.442562 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表