乐筑天下

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

[编程交流] 有人能检查这个Lisp程序吗

[复制链接]

6

主题

15

帖子

9

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-5 17:54:27 | 显示全部楼层 |阅读模式
你好Lispers
 
我已经做了一个lisp(不完全是我自己做的,我刚刚编译了许多从网上找到的lisp)。它在行为不端后第一次运行良好。有人能在下面的lisp中找到错误吗?
 
在命令结束时,如果我退出它,请撤消一步。
 
请检查此Lisp程序。。
  1. ;;;compiled from various lisps. Thanks to all Developers.
  2. ;;;compiled by Balaji Subramanian VSL Middle East balaji.indian@yahoo.com
  3. ;;;Version 1.0 Inner Tenndon Z-Values Created.
  4. ;;;VERSION 1.1 Z-VALUES moved and duplicate lines deleted.
  5. ;;;VERSION 1.2 Z-VALUES ALIGNED AT EQUAL SPACING
  6. (defun *error* (errmsg)
  7. (princ "\nAn error has occurred in the programme. ")
  8. (terpri)
  9. (prompt errmsg)
  10. (princ)
  11. )
  12. (defun trap1 (errmsg)                                                ;define function
  13. (command "u" "b")                                        ;undo back
  14. (setvar "osmode" oldsnap)                                ;restore variables
  15. (setvar "clayer" oldlayer)
  16. (setvar "cmdecho" oldecho)
  17. (setq *error* temperr)                                        ;restore *error*
  18. (prompt "\nResetting System Variables ")                ;inform user
  19.   (princ)
  20. )
  21. (defun texAlign (item /)
  22.    (if(= daly:Direct "Y")
  23.      (progn
  24.          (setq disDelta(- disDelta daly:strDis))                        ; end setq
  25.      (vla-put-Alignment (car str) tAlignment)
  26.      (cond
  27.   ((= tAlignment 0)
  28.      (vla-put-InsertionPoint (car str)
  29.        (vlax-3D-Point(car insPoint)
  30.          (+ disDelta(cadr insPoint))(nth 2 insPoint)))
  31.    )
  32.   ((member tAlignment '(1 2 4 6 7 8 9 10 11 12 13 14))
  33.      (vla-put-TextAlignmentPoint (car str)
  34.        (vlax-3D-Point(car tAlignPt)
  35.          (+ disDelta(cadr tAlignPt))(nth 2 tAlignPt)))
  36.    )
  37.   ((member tAlignment '(3 5))
  38.    (princ "\nCan't align string with Aligned or Fit alignment ")
  39.    )
  40.   )                                                                        ; end cond
  41. )                                                                ; end progn
  42.      (progn
  43.      (setq disDelta(- disDelta daly:strDis))                                ; end setq
  44.      (vla-put-Alignment (car str) tAlignment)
  45.      (cond
  46.   ((= tAlignment 0)
  47.      (vla-put-InsertionPoint (car str)
  48.        (vlax-3D-Point(-(car insPoint)disDelta)
  49.          (cadr insPoint)(nth 2 insPoint)))
  50.    )
  51.   ((member tAlignment '(1 2 4 6 7 8 9 10 11 12 13 14))
  52.      (vla-put-TextAlignmentPoint (car str)
  53.        (vlax-3D-Point(-(car tAlignPt)disDelta)
  54.          (cadr tAlignPt)(nth 2 tAlignPt)))
  55.    )
  56.   ((member tAlignment '(3 5))
  57.    (princ "\nCan't align string with Aligned or Fit alignment ")
  58.    )
  59.   )                                                                        ; end cond
  60.      )                                                                        ; end progn
  61.    )                                                                        ; end if
  62.    )                                                                        ; end of texAlign
  63. (defun c:iz ()
  64. (vl-load-com)
  65.         (setq temperr *error*)                                        ;store *error*
  66. (setq *error* trap1)                                        ;re-assign *error*
  67. (setq oldecho (getvar "cmdecho"))                        ;store variables
  68. (setq oldlayer (getvar "clayer"))
  69. (setq oldsnap (getvar "osmode"))
  70. (setvar "cmdecho" 0)                                        ;reset variables
  71. (setvar "osmode" 32)
  72. (command "undo" "m")
  73. (command "layer" "make" "Z-VALUES" "color" "5" "" "")
  74. (princ "\nSelect Outer Tendon: ")
  75. (setq ten2 (ssget))
  76. (princ "\nSelect Inner Tendon: ")
  77. (setq ten1 (ssget))
  78. (princ "\n>> Select Points >>")
  79. (setvar "osmode" 0)
  80. (if (setq i -1 ss (ssget '((0 . "POINT"))))                                                ;IF STARTS HERE
  81.    
  82.    (if (and (setq ent (car (entsel "\nSelect Reference Line: ")))
  83.             (wcmatch (cdr (assoc 0 (entget ent))) "*LINE,CIRCLE,ELLIPSE,ARC"))
  84.        (while (setq pt (ssname ss (setq i (1+ i))))
  85.                          (setq p2 (vlax-curve-getClosestPointtoprojection ent
  86.                             (setq p1 (cdr (assoc 10 (entget pt)))) '(0 0 1)))
  87.                          (entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2))))))         ;IF ENDS HERE
  88. (setq ssetzv (ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))
  89.         (command "EXTEND" ten2 "" ssetzv "")
  90.         (command "TRIM" ten1 "" ssetzv "" )
  91. (terpri)
  92. (prompt "\nSelect Z-Value lines: ")
  93.         (setvar "OSMODE" 32)
  94.         (setq ss1 (ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))
  95. (setvar "OSMODE" 0)
  96.   (progn                                                                        ;PROG1 STARTS HERE
  97.         (setq count 0)
  98.         (repeat (sslength ss1)                                                        ;REPEAT STARTS HERE
  99.         (setq cont (entget (ssname ss1 count)))
  100.         (if (= "LINE" (cdr (assoc 0 cont)))                                        ;IF STARTS HERE
  101.                 (progn                                                                ;PROG2 STARTS HERE
  102.                 (setq CONST_txt-ht 250.0
  103.                 CONST_style "Standard"
  104.                 layer (cdr (assoc 8 cont))
  105.                 ip (cdr (assoc 10 cont))
  106.                 rot (angle (cdr (assoc 10 cont)) (cdr (assoc 11 cont)))
  107.                 dist (distance (cdr (assoc 10 cont)) (cdr (assoc 11 cont)))
  108.                 ent (list                                                        ;LIST STATS HERE
  109.                 (cons 0 "TEXT")
  110.                 (cons 100 "AcDbEntity")
  111.                 (cons 100 "AcDbText")
  112.                 (cons 10 ip)
  113.                 (cons 40 CONST_txt-ht)
  114.                 (cons 41 1)
  115.                 (cons 72 0)
  116.                 (cons 1 (rtos dist 2))
  117.                 (cons 7 CONST_style)
  118.                 (list 210 0.0 0.0 1.0)
  119.                 (cons 11 (cdr (assoc 11 cont)))
  120.                 (cons 50 rot))
  121.                 )
  122.                 (entmake ent)
  123.                 )                                                                ;PROG2 ENDS HERE
  124.                 )                                                                ;IF ENDS HERE
  125.                 (setq count (1+ count))
  126.                 )                                                                ;REPEAT ENDS HERE
  127.                 )                                                                ;PROG1 ENDS HERE
  128.         (setq tSet(ssget "X" '((0 . "TEXT")(8 . "Z-VALUES"))))                                                ;select texts
  129.         (setq mpt1 '(0 0))                                                                ;moving orgin
  130.         (setq mpt2 (polar mpt1 (/ pi 2) 40000))                                                ;momving location
  131.         (command "MOVE" tSet "" mpt1 mpt2 "")                                                ;move command
  132.         (if (setq deli(ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))                        ;selecting z-vzlues lines
  133. (progn
  134.   (command "ERASE" deli "")))                                                        ;delete lines
  135. (if(not daly:Direct)(setq daly:Direct "Y"))
  136. (setq oldDirect daly:Direct)
  137. (if(not daly:Align)(setq daly:Align "H"))
  138. (setq oldAlign daly:Align)
  139. (if(not daly:disMode)(setq daly:disMode "S"))
  140. (setq oldDisMode daly:disMode)
  141. (if(not daly:strDis)(setq daly:strDis 1000))
  142. (setq oldStrDis daly:strDis)
  143. (initget "Y X")
  144. (setq daly:Direct
  145.    (getkword
  146.      (strcat "\nSpecify alignment direction [X-axis/Y-axis] <"daly:Direct">: ")))
  147. (if(null daly:Direct)(setq daly:Direct oldDirect))
  148. (initget "H L C M R TL TC TR ML MC MR BL BC BR")
  149. (setq daly:Align
  150.    (getkword
  151.      (strcat "\nSpecify justification [Hitest string/Left/Center/Middle/Right/TL/TC/TR/ML/MC/MR/BL/BC/BR] <"daly:Align">: "))
  152. alignList '(("L" 0)("C" 1)("R" 2)("M" 4)("TL" 6)("TC" 7)("TR" ("ML" 9)("MC" 10)("MR" 11)("BL" 12)("BC" 13)("BR" 14))
  153.             )                                                        ; end setq
  154. (if(null daly:Align)(setq daly:Align oldAlign))
  155. (initget "S C")
  156. (setq daly:disMode
  157.    (getkword
  158.      (strcat "\nSpecify distance between strings [standard/Custom] <"daly:disMode">: ")))
  159. (if(null daly:disMode)(setq daly:disMode oldDisMode))
  160. (if(= daly:disMode "C")
  161.    (progn
  162.    (setq daly:strDis(getdist(strcat "\nSpecify Custom distance <"(rtos daly:strDis)">: ")))
  163.    (if(null daly:strDis)(setq daly:strDis oldStrDis))
  164.    (princ(strcat "\nCustom distance is "(rtos daly:strDis)))
  165.     )                                                                        ; end progn
  166.    )                                                                        ; end if
  167. (while T
  168. (princ "\n<<< Select DText and press Enter or Esc to Quit >>> ")
  169.   (if
  170.     (setq dtSet(ssget '((0 . "TEXT")(8 . "Z-VALUES"))))
  171.    (progn
  172.      (if(= "Y" daly:Direct)
  173.      (setq dtList(vl-sort(mapcar
  174.           '(lambda (x)(list x
  175.         (+(cadr(vlax-safearray->list
  176.             (vlax-variant-value
  177.               (vla-get-InsertionPoint x))))
  178.                 (cadr(vlax-safearray->list
  179.             (vlax-variant-value
  180.               (vla-get-TextAlignmentPoint x)))))))
  181.       (mapcar 'vlax-ename->vla-object
  182.                  (vl-remove-if 'listp
  183.                     (mapcar 'cadr(ssnamex dtSet)))))
  184.           (function(lambda(a b)(>(cadr a)(cadr b))))))
  185. (setq dtList(vl-sort(mapcar
  186.           '(lambda (x)(list x
  187.         (+(car(vlax-safearray->list
  188.             (vlax-variant-value
  189.               (vla-get-InsertionPoint x))))
  190.                 (car(vlax-safearray->list
  191.             (vlax-variant-value
  192.               (vla-get-TextAlignmentPoint x)))))))
  193.       (mapcar 'vlax-ename->vla-object
  194.                  (vl-remove-if 'listp
  195.                     (mapcar 'cadr(ssnamex dtSet)))))
  196.           (function(lambda(a b)(<(cadr a)(cadr b))))))
  197.       ); end if
  198.   
  199.     (setq hitStr(caar dtList))
  200.      
  201.      (if(/= "H" daly:Align)
  202. (progn
  203.   (vla-getBoundingBox hitStr 'oldMinPt 'MaxPt)
  204.   (foreach lst alignList
  205.              (if(=(car lst)daly:Align)
  206.                (progn
  207.                  (if
  208.                          (not
  209.                           (vl-catch-all-error-p
  210.                            (vl-catch-all-apply 'vla-put-Alignment(list hitStr(cadr lst)))))
  211.                   (progn
  212.                     (vla-getBoundingBox hitStr 'minPt 'maxPt)
  213.                     (vla-move hitStr minPt oldMinPt)
  214.                     ); end progn
  215.                   ); end if
  216.                  ); end progn
  217.                ); end if
  218.     ); end foreach
  219.   ); end progn
  220. ); end if
  221.                  
  222.     (setq tHeight(vla-get-Height hitStr)
  223.           insPoint(vlax-safearray->list
  224.                     (vlax-variant-value
  225.                       (vla-get-InsertionPoint hitStr)))
  226.           tAlignPt(vlax-safearray->list
  227.                     (vlax-variant-value
  228.                       (vla-get-TextAlignmentPoint hitStr)))
  229.           tAlignment(vla-get-Alignment hitStr)
  230.           dtList(cdr dtList)
  231.           disDelta 0.0
  232.     ); end setq
  233.    (if(= daly:disMode "S")(setq daly:strDis(* 4 tHeight)))
  234.      (foreach str dtList
  235.     (if
  236.   (not
  237.       (vl-catch-all-error-p
  238.            (vl-catch-all-apply 'texAlign (list str))))
  239.       (princ)
  240.       (setq errFlag T)
  241.       ); end if
  242.   ); end foreach
  243.      (if errFlag(princ "\n<!> Some Entities on Locked Layer <!>"))
  244. ); end progn
  245.    (princ "\nStrings isn't selected. ")
  246.    ); end if
  247.    ); end while
  248.         (setvar "clayer" oldlayer)                                                        ;reset variables
  249. (setvar "osmode" oldsnap)
  250. (setvar "cmdecho" oldecho)
  251. (setq *error* temperr)       
  252. (princ)
  253. )
  254. [attachment=43920:name]

 
您在哪里输入ESC?
 
真的需要一个dwg来匹配代码。
 
David nice lisp checker是什么?
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 18:33:40 | 显示全部楼层
 
>>ALLY,一个Lisp分析器
 
ALLY v3.0a、AutoLISP调试工具和程序员工作台不再受支持。
 
非常旧,不幸停产
 
 
-大卫
185432eykdfg03yk0dgg6d.jpg
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 18:47:47 | 显示全部楼层
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 19:10:00 | 显示全部楼层
 
>> ALLY, A Lisp Analyzer
 
ALLY v3.0a, AutoLISP debugging tools and programmer's workbench is no longer supported.

 
Very old and unfortunately discontinued
 
 
-David
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 00:59 , Processed in 0.465147 second(s), 62 queries .

© 2020-2025 乐筑天下

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