erbalaji 发表于 2022-7-5 17:54:27

有人能检查这个口齿不清吗

你好Lispers
 
我已经做了一个lisp(不完全是我自己做的,我刚刚编译了许多从网上找到的lisp)。它在行为不端后第一次运行良好。有人能在下面的lisp中找到错误吗?
 
在命令结束时,如果我退出它,请撤消一步。
 
请检查此Lisp程序。。
;;;compiled from various lisps. Thanks to all Developers.
;;;compiled by Balaji Subramanian VSL Middle East balaji.indian@yahoo.com
;;;Version 1.0 Inner Tenndon Z-Values Created.
;;;VERSION 1.1 Z-VALUES moved and duplicate lines deleted.
;;;VERSION 1.2 Z-VALUES ALIGNED AT EQUAL SPACING

(defun *error* (errmsg)
(princ "\nAn error has occurred in the programme. ")
(terpri)
(prompt errmsg)
(princ)
)

(defun trap1 (errmsg)                                                ;define function
(command "u" "b")                                        ;undo back
(setvar "osmode" oldsnap)                                ;restore variables
(setvar "clayer" oldlayer)
(setvar "cmdecho" oldecho)
(setq *error* temperr)                                        ;restore *error*
(prompt "\nResetting System Variables ")                ;inform user
(princ)
)

(defun texAlign (item /)
   (if(= daly:Direct "Y")
   (progn
         (setq disDelta(- disDelta daly:strDis))                        ; end setq
   (vla-put-Alignment (car str) tAlignment)
   (cond
((= tAlignment 0)
   (vla-put-InsertionPoint (car str)
       (vlax-3D-Point(car insPoint)
         (+ disDelta(cadr insPoint))(nth 2 insPoint)))
   )
((member tAlignment '(1 2 4 6 7 8 9 10 11 12 13 14))
   (vla-put-TextAlignmentPoint (car str)
       (vlax-3D-Point(car tAlignPt)
         (+ disDelta(cadr tAlignPt))(nth 2 tAlignPt)))
   )
((member tAlignment '(3 5))
   (princ "\nCan't align string with Aligned or Fit alignment ")
   )
)                                                                        ; end cond
)                                                                ; end progn
   (progn
   (setq disDelta(- disDelta daly:strDis))                                ; end setq
   (vla-put-Alignment (car str) tAlignment)
   (cond
((= tAlignment 0)
   (vla-put-InsertionPoint (car str)
       (vlax-3D-Point(-(car insPoint)disDelta)
         (cadr insPoint)(nth 2 insPoint)))
   )
((member tAlignment '(1 2 4 6 7 8 9 10 11 12 13 14))
   (vla-put-TextAlignmentPoint (car str)
       (vlax-3D-Point(-(car tAlignPt)disDelta)
         (cadr tAlignPt)(nth 2 tAlignPt)))
   )
((member tAlignment '(3 5))
   (princ "\nCan't align string with Aligned or Fit alignment ")
   )
)                                                                        ; end cond
   )                                                                        ; end progn
   )                                                                        ; end if
   )                                                                        ; end of texAlign

(defun c:iz ()
(vl-load-com)

        (setq temperr *error*)                                        ;store *error*
(setq *error* trap1)                                        ;re-assign *error*
(setq oldecho (getvar "cmdecho"))                        ;store variables
(setq oldlayer (getvar "clayer"))
(setq oldsnap (getvar "osmode"))
(setvar "cmdecho" 0)                                        ;reset variables
(setvar "osmode" 32)
(command "undo" "m")

(command "layer" "make" "Z-VALUES" "color" "5" "" "")
(princ "\nSelect Outer Tendon: ")
(setq ten2 (ssget))

(princ "\nSelect Inner Tendon: ")
(setq ten1 (ssget))

(princ "\n>> Select Points >>")
(setvar "osmode" 0)
(if (setq i -1 ss (ssget '((0 . "POINT"))))                                                ;IF STARTS HERE
   
   (if (and (setq ent (car (entsel "\nSelect Reference Line: ")))
            (wcmatch (cdr (assoc 0 (entget ent))) "*LINE,CIRCLE,ELLIPSE,ARC"))

       (while (setq pt (ssname ss (setq i (1+ i))))
                         (setq p2 (vlax-curve-getClosestPointtoprojection ent
                          (setq p1 (cdr (assoc 10 (entget pt)))) '(0 0 1)))
                         (entmake (list (cons 0 "LINE") (cons 10 p1) (cons 11 p2))))))         ;IF ENDS HERE

(setq ssetzv (ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))

        (command "EXTEND" ten2 "" ssetzv "")
        (command "TRIM" ten1 "" ssetzv "" )
(terpri)
(prompt "\nSelect Z-Value lines: ")
        (setvar "OSMODE" 32)
        (setq ss1 (ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))
(setvar "OSMODE" 0)
(progn                                                                        ;PROG1 STARTS HERE
        (setq count 0)
        (repeat (sslength ss1)                                                        ;REPEAT STARTS HERE
        (setq cont (entget (ssname ss1 count)))
        (if (= "LINE" (cdr (assoc 0 cont)))                                        ;IF STARTS HERE
                (progn                                                                ;PROG2 STARTS HERE
                (setq CONST_txt-ht 250.0
                CONST_style "Standard"
                layer (cdr (assoc 8 cont))
                ip (cdr (assoc 10 cont))
                rot (angle (cdr (assoc 10 cont)) (cdr (assoc 11 cont)))
                dist (distance (cdr (assoc 10 cont)) (cdr (assoc 11 cont)))
                ent (list                                                        ;LIST STATS HERE
                (cons 0 "TEXT")
                (cons 100 "AcDbEntity")
                (cons 100 "AcDbText")
                (cons 10 ip)
                (cons 40 CONST_txt-ht)
                (cons 41 1)
                (cons 72 0)
                (cons 1 (rtos dist 2))
                (cons 7 CONST_style)
                (list 210 0.0 0.0 1.0)
                (cons 11 (cdr (assoc 11 cont)))
                (cons 50 rot))
                )
                (entmake ent)
                )                                                                ;PROG2 ENDS HERE
                )                                                                ;IF ENDS HERE
                (setq count (1+ count))
                )                                                                ;REPEAT ENDS HERE
                )                                                                ;PROG1 ENDS HERE

        (setq tSet(ssget "X" '((0 . "TEXT")(8 . "Z-VALUES"))))                                                ;select texts
        (setq mpt1 '(0 0))                                                                ;moving orgin
        (setq mpt2 (polar mpt1 (/ pi 2) 40000))                                                ;momving location
        (command "MOVE" tSet "" mpt1 mpt2 "")                                                ;move command
        (if (setq deli(ssget "X" '((0 . "LINE")(8 . "Z-VALUES"))))                        ;selecting z-vzlues lines
(progn
(command "ERASE" deli "")))                                                        ;delete lines

(if(not daly:Direct)(setq daly:Direct "Y"))
(setq oldDirect daly:Direct)
(if(not daly:Align)(setq daly:Align "H"))
(setq oldAlign daly:Align)
(if(not daly:disMode)(setq daly:disMode "S"))
(setq oldDisMode daly:disMode)
(if(not daly:strDis)(setq daly:strDis 1000))
(setq oldStrDis daly:strDis)
(initget "Y X")
(setq daly:Direct
   (getkword
   (strcat "\nSpecify alignment direction <"daly:Direct">: ")))
(if(null daly:Direct)(setq daly:Direct oldDirect))
(initget "H L C M R TL TC TR ML MC MR BL BC BR")
(setq daly:Align
   (getkword
   (strcat "\nSpecify justification <"daly:Align">: "))
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))
          )                                                        ; end setq
(if(null daly:Align)(setq daly:Align oldAlign))
(initget "S C")
(setq daly:disMode
   (getkword
   (strcat "\nSpecify distance between strings <"daly:disMode">: ")))
(if(null daly:disMode)(setq daly:disMode oldDisMode))
(if(= daly:disMode "C")
   (progn
   (setq daly:strDis(getdist(strcat "\nSpecify Custom distance <"(rtos daly:strDis)">: ")))
   (if(null daly:strDis)(setq daly:strDis oldStrDis))
   (princ(strcat "\nCustom distance is "(rtos daly:strDis)))
    )                                                                        ; end progn
   )                                                                        ; end if
(while T
(princ "\n<<< Select DText and press Enter or Esc to Quit >>> ")
(if
    (setq dtSet(ssget '((0 . "TEXT")(8 . "Z-VALUES"))))
   (progn
   (if(= "Y" daly:Direct)
   (setq dtList(vl-sort(mapcar
          '(lambda (x)(list x
      (+(cadr(vlax-safearray->list
            (vlax-variant-value
            (vla-get-InsertionPoint x))))
                (cadr(vlax-safearray->list
            (vlax-variant-value
            (vla-get-TextAlignmentPoint x)))))))
      (mapcar 'vlax-ename->vla-object
               (vl-remove-if 'listp
                  (mapcar 'cadr(ssnamex dtSet)))))
          (function(lambda(a b)(>(cadr a)(cadr b))))))

(setq dtList(vl-sort(mapcar
          '(lambda (x)(list x
      (+(car(vlax-safearray->list
            (vlax-variant-value
            (vla-get-InsertionPoint x))))
                (car(vlax-safearray->list
            (vlax-variant-value
            (vla-get-TextAlignmentPoint x)))))))
      (mapcar 'vlax-ename->vla-object
               (vl-remove-if 'listp
                  (mapcar 'cadr(ssnamex dtSet)))))
          (function(lambda(a b)(<(cadr a)(cadr b))))))
      ); end if

    (setq hitStr(caar dtList))
   
   (if(/= "H" daly:Align)
(progn
(vla-getBoundingBox hitStr 'oldMinPt 'MaxPt)
(foreach lst alignList
             (if(=(car lst)daly:Align)
             (progn
               (if
                         (not
                        (vl-catch-all-error-p
                           (vl-catch-all-apply 'vla-put-Alignment(list hitStr(cadr lst)))))
                  (progn
                  (vla-getBoundingBox hitStr 'minPt 'maxPt)
                  (vla-move hitStr minPt oldMinPt)
                  ); end progn
                  ); end if
               ); end progn
             ); end if
    ); end foreach
); end progn
); end if
               
    (setq tHeight(vla-get-Height hitStr)
          insPoint(vlax-safearray->list
                  (vlax-variant-value
                      (vla-get-InsertionPoint hitStr)))
          tAlignPt(vlax-safearray->list
                  (vlax-variant-value
                      (vla-get-TextAlignmentPoint hitStr)))
          tAlignment(vla-get-Alignment hitStr)
          dtList(cdr dtList)
          disDelta 0.0
    ); end setq
   (if(= daly:disMode "S")(setq daly:strDis(* 4 tHeight)))
   (foreach str dtList
    (if
(not
      (vl-catch-all-error-p
         (vl-catch-all-apply 'texAlign (list str))))
      (princ)
      (setq errFlag T)
      ); end if
); end foreach
   (if errFlag(princ "\n<!> Some Entities on Locked Layer <!>"))
); end progn
   (princ "\nStrings isn't selected. ")
   ); end if
   ); end while

        (setvar "clayer" oldlayer)                                                        ;reset variables
(setvar "osmode" oldsnap)
(setvar "cmdecho" oldecho)
(setq *error* temperr)       
(princ)
)




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

David Bethel 发表于 2022-7-5 18:33:40

 
>>ALLY,一个Lisp分析器
 
ALLY v3.0a、AutoLISP调试工具和程序员工作台不再受支持。
 
非常旧,不幸停产
 
 
-大卫

BIGAL 发表于 2022-7-5 18:47:47

David Bethel 发表于 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
页: [1]
查看完整版本: 有人能检查这个Lisp程序吗