乐筑天下

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

[编程交流] 测量网格Lisp

[复制链接]

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 23:38:45 | 显示全部楼层
你为什么不给我们一个你正朝着什么方向努力的形象。
 
这是我做的另一个图形比例。
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:42:32 | 显示全部楼层
这就是我想要的最终结果
 
000639lx6tvh2afkxcfxeg.jpg
 
文本环绕边缘,绿色突出显示间隔50m,所有绘制到
用户定义的矩形(我将从视口中复制和粘贴)。
 
干杯
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 23:47:10 | 显示全部楼层
一个实用的观点是,不同的测量不一定具有相同的坐标,因此每个视口都是一次性的。
 
我会手动完成(使用我的lisp作为基础不到一分钟),而不需要一键完成所有事情。
 
但是,如果您想花时间编写lisp,那么可以在以后共享它
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:49:12 | 显示全部楼层
问题是,在我上一份工作中,我被宠坏了。那里的一个小伙子是Lisp程序的天才!我想他一定是Lisp程序地做梦了!他写了一大堆我认为理所当然的lisp例程。其中一个是他的网格命令,它可以按照您的意愿绘制网格。现在在我的新工作中,我必须从头开始,我开始明白他做了多少!
不过,请放心,如果我成功地启动了我的网格例程,我将与所有人共享它(以及我提出的任何其他内容!)。。。。但必须先让他们工作!
回复

使用道具 举报

44

主题

542

帖子

502

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
220
发表于 2022-7-5 23:53:52 | 显示全部楼层
给你上一份工作的人发电子邮件,让他给你发一些Lisp程序的例行公事?
回复

使用道具 举报

2

主题

53

帖子

57

银币

初来乍到

Rank: 1

铜币
14
发表于 2022-7-5 23:55:29 | 显示全部楼层
试试这个,不知道是谁写的。
我用了另一个,但我不能张贴,因为它的版权。
  1. (defun c:addgrid()
  2. (SETVAR "SNAPANG" 0)
  3. (SETQ space (GETreal "\n Input Grid Interval :- "))
  4. (setq pt1 (getpoint "\n Pick Bottom Left Corner for Grid :- "))
  5. (setq pt2 (getcorner pt1 "\n Pick Top Right Corner for Grid :- "))
  6. (setq scale (getreal "\n Scale for Grid Information :- "))
  7. (SETVAR "CMDECHO" 0)
  8. (SETVAR "ANGBASE" 0)
  9. (SETVAR "ANGDIR" 0)
  10. (setq csize (* 10.0 (/ scale 1000.0)))
  11. (setq X1 (CAR PT1))
  12. (SETQ Y1 (CADR PT1))
  13. (SETQ X2 (CAR PT2))
  14. (SETQ Y2 (CADR PT2))
  15. (SETQ X1A (/ X1 SPACE))
  16. (SETQ X1b (FIX X1A))
  17. (SETQ X1c (- X1A X1b))
  18. (SETQ X1c (* X1c SPACE));remainder
  19. (SETQ y1A (/ y1 SPACE))
  20. (SETQ y1b (FIX y1A))
  21. (SETQ y1c (- y1A y1b))
  22. (SETQ y1c (* y1c SPACE));remainder
  23. (SETQ y2A (/ y2 SPACE))
  24. (SETQ y2b (FIX y2A))
  25. (SETQ y2c (- y2A y2b))
  26. (SETQ y2c (* y2c SPACE));remainder
  27. (SETQ X2A (/ X2 SPACE))
  28. (SETQ X2b (FIX X2A))
  29. (SETQ X2c (- X2A X2b))
  30. (SETQ X2c (* X2c SPACE));remainder
  31. (setq x1b (* (+ x1b 1) space))
  32. (setq y1b (* (+ y1b 1) space))
  33. (setq x2b (* x2b space))
  34. (setq y2b (* y2b space))
  35. (setq xarr (- x2b x1b))
  36. (setq xarr (/ xarr space))
  37. (setq yarr (- y2b y1b))
  38. (setq yarr (/ yarr space))
  39. (setq orig (list x1b y1b))
  40. (command "line" (list x1b (- y1b csize)) (list x1b (+ y1b csize)) "")
  41. (setq l1 (entlast))
  42. (command "line" (list (- x1b csize) y1b) (list (+ x1b csize) y1b) "")
  43. (setq l2 (entnext l1))
  44. (setq yarr (fix yarr)) (setq xarr (fix xarr))
  45. (command "array" l1 l2 "" "r" (+ 1 yarr) (+ 1 xarr) space space)
  46. (setq east x1b)
  47. (setq inner (/ 1.0 (/ 1000.0 scale)))
  48. (setq tsize (/ 1.5 (/ 1000.0 scale)))
  49. (repeat (+ xarr 1)
  50. (setq texor (list (+ east inner) (- y2 inner)))
  51. (setq val (rtos east 2 3))
  52. (SETQ VAL (STRCAT VAL "E"))
  53. (command "text" texor tsize "270" val)
  54. (setq east (+ east space))
  55. )
  56. (setq east x1b)
  57. (repeat (+ xarr 1)
  58. (setq texor (list (+ east inner) (+ y1 inner)))
  59. (setq val (rtos east 2 3))
  60. (setq val (strcat val "E"))
  61. (command "text" "r" texor tsize "270" val)
  62. (setq east (+ east space))
  63. )
  64. (setq north y1b)
  65. (repeat (+ 1 yarr)
  66. (setq texor (list (+ x1 inner) (+ north inner)))
  67. (setq val (rtos north 2 3))
  68. (SETQ VAL (STRCAT VAL "N"))
  69. (command "text" texor tsize "0" val)
  70. (setq north (+ north space))
  71. )
  72. (setq north y1b)
  73. (repeat (+ 1 yarr)
  74. (setq texor (list (- x2 inner) (+ north inner)))
  75. (setq val (rtos north 2 3))
  76. (SETQ VAL (STRCAT VAL "N"))
  77. (command "text" "r" texor tsize "0" val)
  78. (setq north (+ north space))
  79. )
  80. (SETVAR "CMDECHO" 1)
  81. )
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:59:20 | 显示全部楼层
加油,加油!我想我会玩一玩,看看是否可以对它进行个性化设置。我甚至可能继续我的工作,只是为了见鬼(如果我能麻烦的话!)
再次感谢所有帮助我的人!
回复

使用道具 举报

1

主题

9

帖子

8

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-6 00:01:24 | 显示全部楼层
我终于抽出时间来完成我的网格Lisp程序!我必须承认我真的很自豪。
代码有点凌乱,但命令本身似乎工作正常。(这就够了
我!)
所以,对于你们中感兴趣的人来说,这就是。如有任何反馈,我们将不胜感激。
gridR。lsp
回复

使用道具 举报

8

主题

1133

帖子

1164

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-6 00:04:05 | 显示全部楼层
当你下定决心时,看看你能做些什么。祝贺
 
如果它能按你想要的那样工作,那么它就是完美的。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 00:07:49 | 显示全部楼层
看了你的代码,做了很多关于比例的事情。我觉得你可以通过计算比例因子来简化比例,而不是为每个比例计算。记住,对于度量,它似乎是1m=1000毫米
 
算出一个变量,比如setsc为1000/scale,然后你只需要把你的行距表示为setsc*行间距等
 
这里有一个例子,它使用“repeat”而不是“while”来循环,你可以在repeat中有repeat,这样做更容易3*X 4*Y网格
(重复X(重复Y等)
 
  1. (setvar "cLAYER" GRID--2)
  2. (setq IP1 (getpoint "\nSTARTING POINT  (TOP LEFT CORNER): "))(terpri)
  3. (setq X(car IP1)) (setq Y(cadr IP1))
  4. (setq EWLIST(list X)) (setq NSLIST(list Y))
  5. (setq #EW(getint"Number of GRIDS across: "))(terpri)
  6. (setq EW1(getint"Dimension for first GRID: "))(terpri)
  7. (setq EWD(+ X EW1)) (setq EWLIST(append EWLIST (list EWD)))
  8. (setq EW2(itoa EW1))
  9. (setq #BAY 2)
  10. (repeat (- #EW 1)
  11. (setq $BAY(itoa #BAY))
  12. (setq FISH(strcat "Dimension for Grid " $BAY ": <RETURN> to repeat previous: "))
  13. (setq EW3(getstring FISH)) (TERPRI)
  14. (if (= (ascii EW3) 0)(setq EW3 EW2))
  15. (setq EW1(atoi EW3)) (setq EW2(itoa EW1))
  16. (setq EWD(+ EWD EW1))
  17. (setq EWLIST(append EWLIST (list EWD)))
  18. (setq #BAY(+ #BAY 1))
  19. )
  20. (setq EWD(+ EWD 2000))
  21. (setq #NS(getint"Number of Grids down: "))(terpri)
  22. (setq NS1(getint"Dimension for first Grid: "))(terpri)
  23. (setq NSD(- Y NS1)) (setq NSLIST(append NSLIST (list NSD)))
  24. (setq NS2(itoa NS1)) (setq #BAY 2)
  25. (repeat (- #NS 1)
  26. (setq $BAY(itoa #BAY))
  27. (setq NS3(getstring"..And next Grid <RETURN> to repeat previous: "))(terpri)
  28. (if (= (ascii NS3) 0)(setq NS3 NS2))
  29. (setq NS1(atoi NS3)) (setq NS2(itoa NS1))
  30. (setq NSD(- NSD NS1))
  31. (setq NSLIST(append NSLIST (list NSD)))
  32. )
  33. (setq NSD(- NSD 2000))
  34. (setq NUM 0)
  35. (repeat (+ #EW 1)
  36. (command "LINE" (list (nth NUM EWLIST)(+ Y 2000))(list (nth NUM EWLIST) NSD))(command)
  37. (setq NUM(+ NUM 1))
  38. (setq #BAY(+ #BAY 1))
  39. )
  40. (setq NUM 0)
  41. (repeat (+ #NS 1)
  42. (command "LINE" (list (- X 2000) (nth NUM NSLIST)) (list EWD (nth NUM NSLIST))) (command)
  43. (setq NUM(+ NUM 1))
  44. )

 
希望这对其他项目有帮助,作为第一个很好的努力
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 02:57 , Processed in 1.045653 second(s), 72 queries .

© 2020-2025 乐筑天下

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