乐筑天下

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

[编程交流] incatt公司

[复制链接]

73

主题

261

帖子

195

银币

后起之秀

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

铜币
375
发表于 2022-7-5 16:39:15 | 显示全部楼层 |阅读模式
大家好,
我有一个Lisp程序的作品完美。但我想给它添加一个函数。
现在的Lisp程序通过选择块来计算/增加属性。
添加我想要的功能是房间号。这将同时将数字放入块/属性中。这不算,但保持不变。
因此,如果我运行lisp,他会要求输入房间号(“房间编号”标记)和一个带递增的数字(“TEXT1”标记)。
我对lisp了解不多。我确实知道:(setq room=nr(getString T“room number”))来获得房间号,我想通过(setq o(ssget“_+:E:S:L”'((0。“INSERT”)(66.1)))部分获得块选择。
我在Lee Mac的网站上查看了属性LISP,但我不知道应该在哪里以及如何放置它们。
 
 
 
 
  1. ;;                                                                        ;;
  2. ;;  Made By ...... TaeEun  12/10/07                                       ;;
  3. ;;------------------------------------------------------------------------;;
  4. ;;  Contact me ... arin9916@naver.com                                     ;;
  5. ;;             ... http://cafe.naver.com/ptelisp                          ;;
  6. ;;------------------------------------------------------------------------;;
  7. ;;  Ver 1.0 ...... Design & Created                                       ;;
  8. ;;      1.1 ...... Add StringCal Function                                 ;;
  9. ;;------------------------------------------------------------------------;;
  10. ;;  Client ....... CADTUTOR                                               ;;
  11. ;;------------------------------------------------------------------------;;
  12. (defun c:INCATT
  13.    ( / f str i f tag num pre post OOv
  14.      
  15. ;        *StartStr121007
  16. ;        *IncreaseN121007
  17.      
  18.        HUE:DivideNum
  19.        HUE:memoVar
  20.        HUE:stringsubst
  21.        HUE:StringCal
  22.        HUE:start
  23.        HUE:end
  24.      
  25.        _divideStr
  26.      
  27.    )
  28.    ;-------------------------------------------------------------------------
  29.    ; Sub Function
  30.    ;-------------------------------------------------------------------------
  31.    (defun HUE:DivideNum ( str / lst s m v1 v2 i j c _NumP _Cal)
  32.        (defun _NumP ( x ) (<= 48 x 57))
  33.        (defun _Cal ( ty v )
  34.            (set v (cons (vl-list->string (reverse (eval ty))) (eval v)))
  35.            (set ty nil)
  36.        )
  37.      
  38.        (setq lst (vl-string->list str) i -1 j -1)
  39.      
  40.        (repeat (length lst)
  41.            (setq c (nth (setq i (+ i 1)) lst))
  42.          
  43.            (cond
  44.                (    (_NumP c)
  45.                    (setq s (cons c s) ) (cond ( m (_Cal 'm 'v1) (setq j (+ 1 j)))))
  46.             
  47.                (    (and (= c 46) (> i 0) (_NumP (nth (- i 1) lst)) (_NumP (nth (+ i 1) lst)))
  48.                    (setq s (cons c s))
  49.                )
  50.                (t  (setq m (cons c m))
  51.                    (cond ( s (_Cal 's 'v1) (setq v2 (cons (setq j (+ 1 j)) v2))))
  52.                )
  53.            )
  54.        )
  55.        (cond
  56.            ( m (_Cal 'm 'v1))
  57.            ( t (_Cal 's 'v1) (setq v2 (cons (setq j (+ 1 j)) v2)))
  58.        ) (list (reverse v1) (reverse v2))
  59.    )
  60.    ;-------------------------------------------------------------------------
  61.    ; Sub Function
  62.    ;-------------------------------------------------------------------------
  63.    (defun HUE:memoVar ( va f m s / v )
  64.        (setq v (if (member (eval va) '(nil "")) s  (eval va)))
  65.        (mapcar 'princ (list "\n" m " <" v "> : "))
  66.        (set va ( f ))
  67.        (if (member(eval va) '(nil "")) (set va v)) (eval va)
  68.    )
  69.    ;-------------------------------------------------------------------------
  70.    ; Sub Function
  71.    ;-------------------------------------------------------------------------
  72.    (defun HUE:stringsubst ( new old str / l i ) (setq l (strlen new) i 0)
  73.        (while (setq i (vl-string-search old str i))
  74.            (setq str (vl-string-subst new old str i) i (+ i l))
  75.        ) str
  76.    )
  77.    ;-------------------------------------------------------------------------
  78.    ; Sub Function
  79.    ;-------------------------------------------------------------------------
  80.    (defun HUE:StringCal ( str f n / _GetPP data1 data2 num i DIMZIN )
  81.        (defun _GetPP ( str / lst l post pre flag )
  82.            (setq lst  (vl-remove  45 (vl-string->list str))
  83.                  post (if (setq l (member 46 lst)) (- (length l) 1) 0)
  84.                  pre  (if (setq l (member 46 (reverse lst))) (- (length l) 1) (length lst))
  85.                  flag (minusp (atof str))
  86.            ) (list pre post flag)
  87.        )
  88.      
  89.        (setq DIMZIN (getvar 'DIMZIN))
  90.      
  91.        (setvar 'DIMZIN 0)
  92.        (setq data1 (_GetPP str)
  93.              num   (vl-string->list (rtos (f (atof str) n) 2 (cadr data1)))
  94.              data2 (_GetPP (vl-list->string num))
  95.              num   (vl-remove 45 num)
  96.        )
  97.        (setvar 'DIMZIN DIMZIN)
  98.        (if (< 0 (setq i (- (car  data1) (car  data2))))
  99.            (repeat i (setq num (cons 48 num)))
  100.        )
  101.        (if (< 0 (setq i (- (cadr data1) (cadr data2))))
  102.            (repeat i (setq num (append num '(48))))
  103.        )
  104.        (if (caddr data2) (setq num (cons 45 num)))
  105.        (vl-list->string num)
  106.    )
  107.    ;-------------------------------------------------------------------------
  108.    ; Sub Function
  109.    ;-------------------------------------------------------------------------
  110.    (defun HUE:start( lst )
  111.        (vla-startundomark (HUE:end nil))
  112.        (list lst (mapcar 'getvar lst))
  113.    )
  114.    ;-------------------------------------------------------------------------
  115.    ; Sub Function
  116.    ;-------------------------------------------------------------------------
  117.    (defun HUE:end ( d / doc )
  118.        (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  119.        (and (cadr d) (mapcar 'setvar (car d) (cadr d)))
  120.        (if (= 8 (logand 8 (getvar 'UNDOCTL))) (vla-endundomark doc)) doc
  121.    )
  122.    ;-------------------------------------------------------------------------
  123.    ; Sub Function
  124.    ;-------------------------------------------------------------------------
  125.    (defun _divideStr ( str / data i j k pre post )
  126.        (setq data (HUE:DivideNum str)
  127.              k    (last (cadr data))
  128.              j    0
  129.              pre  ""
  130.              post ""
  131.        )
  132.      
  133.        (foreach s (car data)
  134.            (cond
  135.                (    (< j k) (setq pre (strcat pre  s)))
  136.                (    (> j k) (setq post(strcat post s)))
  137.                (    (= j k) (setq i s))
  138.            )
  139.            (setq j (+ 1 j))
  140.        )
  141.        (list pre i post)
  142.    )
  143.    ;-------------------------------------------------------------------------
  144.    ; Error Function
  145.    ;-------------------------------------------------------------------------
  146.    (defun *error* (s)
  147.        (if OOv (HUE:End OOv)) (princ s)
  148.    )
  149.    ;-----------------------------------------------------------------------------------
  150.    ; Main Function                                                                  
  151.    ;-----------------------------------------------------------------------------------
  152.    (setq str  (HUE:MemoVar '*StartStr121007  getstring "StartString  " "A1")
  153.          i    (HUE:MemoVar '*IncreaseN121007 getreal   "Increase Num " 1.)
  154.          OOv  (HUE:Start '(DIMZIN))
  155.    )
  156.    (and
  157.        (vl-string-search "," str)
  158.        (setq str (HUE:StringSubst "." "," str)  f t)
  159.    )
  160.    (mapcar 'set '(pre num post) (_DivideStr str))
  161.    (setq tag  "TEXT1"
  162.          num  (HUE:StringCal num - i)
  163.    )
  164.    (setvar 'ERRNO 0)
  165.    (setvar 'DIMZIN
  166.    (while (= 0 (getvar 'ERRNO))
  167.        (and
  168.            (setq o (ssget "_+.:E:S:L" '((0 . "INSERT") (66 . 1))))
  169.            (vl-some
  170.                '(lambda ( att )
  171.                    (if (= tag (vla-get-tagstring att))
  172.                        (progn
  173.                            (setq num (HUE:StringCal num + i)
  174.                                  str (strcat pre num post)
  175.                            )
  176.                            (if f (setq str (HUE:StringSubst "," "." str)))
  177.                            (vla-put-textstring att str)
  178.                        )
  179.                    )
  180.                ) (vlax-invoke (vlax-ename->vla-object (ssname o 0)) 'getattributes)
  181.            )
  182.        )
  183.    )
  184.    (HUE:End OOv)
  185.    (princ)
  186. )(vl-load-com)

 
提前感谢您,
 
Jaap M公司
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 13:56 , Processed in 0.370643 second(s), 54 queries .

© 2020-2025 乐筑天下

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