乐筑天下

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

[编程交流] lisp需要一些帮助

[复制链接]

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 20:07:47 | 显示全部楼层 |阅读模式
你好
我对lisp文件有一个小问题,该文件从DWG中提取坐标,并用前缀和计数器标记它们,然后将它们导出到文本文件。
如果有人能建议如何正确退出这个Lisp程序,我将不胜感激。
 
  1. (defun run ()
  2.       (setq pll (getstring "\nPlease Enter of new file (name.ext) :"))
  3.       (setq pl (open pll "w"))
  4.       (setq ang ( getreal "\nPlease Enter DV Angle: " ) )
  5.       (setq n ( getstring "\nPlease Enter TAXI name: " ) )
  6.        (initget (+ 1 2 4))   
  7.        (setq a ( getint "\nPlease Enter MH number: " ) )
  8.       
  9.       ;(setq e (getstring "\nget no. of first Point :"))
  10.       ;(setq a (atoi e))
  11.       
  12.      
  13. (while (> a 0)
  14.        (setq aa 1)
  15.            (while (<= aa 4)
  16.                (setq p (getpoint "\nselect point :"))
  17.                (setq v1 (strcat "\n " (itoa a) " " (itoa aa) "     "))
  18.                (setq d (polar p (dtr 90) 0))
  19.                (setq f (itoa aa))
  20.                (setq k (itoa a))
  21.                (setq g (strcat n "-" k "-P-" f))
  22.                (command "layer" "m" "number" "c" "3" "" "")
  23.                (command "text" "m" d 0.2 ang g)
  24.                (setq num (entlast))
  25.              ;(command "change" num "" "layer" "" number "")
  26.                (command "change" num "" "p" "layer" "number" "")  
  27.                (command "layer" "m" "point" "c" "1" "" "")
  28.                (command "point" p)
  29.                (setq pt (entlast))
  30.              ;(command "change" pt "" layer "" point "")   
  31.                (command "change" pt "" "p" "layer" "point" "")
  32.                (setq x (car p))
  33.                (setq x (rtos x 2 4))
  34.                (setq x (strcat x "             "))
  35.                (setq v2 x)
  36.                (setq y (cadr p))
  37.                (setq y (rtos y 2 4))
  38.                (setq y (strcat y "          "))
  39.                (setq v3 y)
  40.             
  41.              (princ V1 pl)
  42.               (princ v2 pl)
  43.                (princ v3 pl)
  44.             
  45.            (setq aa (+ aa 1))
  46.            )
  47.            (setq a (+ a 1))
  48.        )
  49.       (command "layer" "m" "txt" "c" "5" "" "")
  50.       (close pl)
  51.       (redraw)
  52.       (princ)
  53. )
  54. (defun c:I ()
  55.       (run)
  56.       (setq fil (getstring "\nget name of the file (name.ext) :"))
  57.           (setq p1 (getpoint "select insertion point :"))
  58.       (setq p2 (polar p1 0.0 35.0))
  59.       (setq p3 (polar p1 0.0 105.0))
  60.       (setq p4 (polar p1 (/ (* -1 pi) 2) 20.0))
  61.       (setq p5 (polar p4 0.0 35.0))
  62.       (setq p6 (polar p4 0.0 70.0))
  63.       (setq p7 (polar p4 0.0 105.0))
  64.       (setq p8 (polar p2 (/ (* -1 pi) 2) 10.0))
  65.       (setq p9 (polar p8 0.0 35.0))
  66.       (setq p10 (polar p8 0.0 70.0))
  67.       (setq p11 (polar p8 (* -1 pi) 15.0))
  68.       (setq p12 (polar p8 (/ pi 2) 5.0))
  69.       (setq p13 (polar p8 (/ (* -1 pi) 2) 5.0))
  70.       (setq p14 (polar p12 0.0 35.0))
  71.       (setq p15 (polar p13 0.0 17.5))
  72.       (setq p16 (polar p13 0.0 52.5))
  73.       (setq p1- (polar p1 (/ (* -1 pi) 2) 2000000000.0))
  74.       (command "text" "m" p11 3.0 0.0 "POINT NO.")
  75.       (command "text" "m" p14 3.0 0.0 "COORDINATES")
  76.       (command "text" "m" p15 3.0 0.0 "X")
  77.       (command "text" "m" p16 3.0 0.0 "Y")
  78.       (command "line" p1 p4 "")
  79.       (setq L14 (entlast))
  80.       (command "line" p2 p8 p5 "")
  81.       (setq L285 (entlast))
  82.       (command "line" p9 p6 "")
  83.       (setq L96 (entlast))
  84.       (command "line" p3 p10 p7 "")
  85.       (setq L3107 (entlast))
  86.       (command "line" p1 p2 p3 "")
  87.       (command "line" p8 p9 p10 "")
  88.       (command "pline" p4 p5 p6 p7 "")
  89.       (setq L4567 (entlast))
  90.       (setq fill (open fil "r"))
  91.       
  92.       (read-line fill)
  93.       (setq new ())
  94.       (setq j 0.0)
  95.       (setq p44 p4)
  96.       (while (setq S (read-line fill))
  97.              (setq pt (polar p44 (/ (* -1 pi) 2) (+ 5 j)))
  98.              (setq pt1 (polar pt 0.0 12.5))
  99.              (setq pt2 (polar pt 0.0 50))
  100.              (setq pt3 (polar pt 0.0 85))
  101.             
  102.              (setq t1 (substr S 1 4))
  103.              (setq t11 (strcat n t1))
  104.              (setq t2 (substr S 5 18))
  105.              (setq t3 (substr S 23 32))
  106.             
  107.              (command "text" "m" pt1 3.0 0.0 t11)
  108.              (command "text" "m" pt2 3.0 0.0 t2)
  109.              (command "text" "m" pt3 3.0 0.0 t3)
  110.             
  111.              (setq p4 (polar p4 (/ (* -1 pi) 2) 10.0))
  112.              (setq p5 (polar p5 (/ (* -1 pi) 2) 10.0))
  113.              (setq p6 (polar p6 (/ (* -1 pi) 2) 10.0))  
  114.              (setq p7 (polar p7 (/ (* -1 pi) 2) 10.0))   
  115.             
  116.              (command "offset" (+ j 10.0) (list L4567 p4) p1- "")
  117.              (setq new (entlast))
  118.             
  119.              (command "extend" new "" (list L14 P4) "")
  120.              (command "extend" new "" (list L285 p5) "")
  121.              (command "extend" new "" (list L96 p6) "")
  122.              (command "extend" new "" (list L3107 p7) "")
  123.              (setq j (+ j 10.0))
  124.       )
  125.       ;(close)
  126.       (close fill)
  127. )
  128. (defun dtr (x)
  129.    ;define degrees to radians function
  130.    (* pi ( / x 180.0))
  131.    ;divide the angle by 180 then
  132.    ;multiply the result by the constant PI
  133. )
  134. (princ)

 
 
最后的
  1. (setq mytext (strcat "Row1" "[url="file://\\P"]\\P[/url]" "row2" "[url="file://\\P"]\\P[/url]" "row3"))
  2. (command "MTEXT" "0,0" "Height" 50  "Width" "0" mytext "")
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:05:44 | 显示全部楼层
谢谢你的支持。
昨天,我为主循环添加了一个上限,它确实对我起了作用。
 
[code](defun run()(setq pll(getstring”\n请输入新文件(name.ext):)(setq pl(open pll“w”)(setq ang(getreal”\n请输入DV角度:)(setq n(getstring”\n请输入出租车名称:)(initget(+1 2 4))(setq a(getint”\n请输入第一个MH的编号:)(setq als(getint”\n请输入最后一个MH的编号:);(setq e(getstring“\n第一点的设置编号:”);(setq a(atoi e))(而(
回复

使用道具 举报

1

主题

2

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 21:35:49 | 显示全部楼层
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 09:25 , Processed in 0.672411 second(s), 58 queries .

© 2020-2025 乐筑天下

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