GhostRider 发表于 2022-7-6 10:37:07

有可能把这些结合起来吗

将这两个编号lisp例程结合起来会很困难吗?我想画一个多边形周围的数字和TXT。我已经能够想出如何编辑这些,但运气不好,并结合这些功能。
 
 
; inserts increasing numbers inside polygon
(defun c:iwn (/ p n ni ts oecho ds th txt na)


(if (= 0 (getvar "dimscale"))(setq ds 1.0)(setq ds (getvar "dimscale")))
(setq th (getvar "dimtxt"))
(setq txt (* th ds))
(setq ts txt)
(if nn (setq nn (fix nn))(setq nn 1))
(if (= nn 0)(setq nn 1))
(princ "\n Increment by < ")
(princ nn)
(princ " >? : ")
(setq ni (getint))
(if (= ni nil)(setq ni nn)(setq nn ni))

(if np
   ()
   (setq np 1)
)
(princ "\n Start or continue with number < ")
(princ np)
(princ " >? : ")
(setq n (getint))
(if (= n nil)
   (setq n np)
   (setq np n)
)
(setq p (getpoint "\n Number location: "))
(setq oecho (getvar "cmdecho"))
(setvar "cmdecho" 0)

(while p
   (setq na (itoa n))
   (entmake (list (cons 0 "TEXT")
   (cons 10 p)
   (cons 11 p)
   (cons 1 na); actual text
   (cons 7 (getvar "TEXTSTYLE"))
   (cons 40 txt)
   (cons 72 4)
      )
    )
   (if (> n 99)
   (command "polygon" "5" p "c" (* ts 1.4))   ; edit for number of polygon sides
   (command "polygon" "5" p "c" (* ts 1.4)))    ; edit for number of polygon sides
   (setq p (getpoint "\n Next number location: ")
n (+ ni n)
np n
   )
)

(setvar "cmdecho" oecho)
(princ)
)
(princ "\n Type > iwn <to insert numbers inside hexagon")

 
第二个允许前缀和后缀TXT。
 
 
;;; TX+INTEGERS+TX
(defun c:tit (/ p n ni pref suff nns ntx ntxx oecho osn ds th txt)
(setq oecho (getvar "cmdecho")
osn   (getvar "osmode")
)
(if (= 0 (getvar "dimscale"))(setq ds 1.0)(setq ds (getvar "dimscale")))
(setq th (getvar "dimtxt"))
(setq txt (* th ds))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(if nn
   (setq nn (fix nn))
   (setq nn 1)
)
(if (= nn 0)(setq nn 1))
(princ "\n Increment numbers by < ")
(princ nn)
(princ " >? : ")
(setq ni (getint))
(if (= ni nil)
   (setq ni nn)
   (setq nn ni)
)
(if np
   (setq np (fix np))
   (setq np nn)
)
(princ "\n Start or continue with number < ")
(princ np)
(princ " >? : ")
(setq n (getint))
(if (= n nil)
   (setq n np)
   (setq np n)
)
(setq nns (itoa n))
(princ "\n Prefix text < ")
(princ pre)
(princ " >? or <.> for none: ")
(setq pref (getstring t))
(if (= pref ".")
   (progn
   (setq pre nil)
   (setq pref nil)
   )
   (progn
   (if (= pref "")
(setq pref pre)
(setq pre pref)
   )
   (if pref
(setq ntx (strcat pref nns))
   )
   )
)
(princ "\n Suffix text < ")
(princ suf)
(princ " >? or <.> for none: ")
(setq suff (getstring t))
(if (= suff ".")
   (progn
   (setq suf nil)
   (setq suff nil)
   )
   (progn
   (if (= suff "")
(setq suff suf)
(setq suf suff)
   )
   (if suff
(if pref
(setq ntxx (strcat pref nns suff))
(setq ntxx (strcat nns suff))
)
   )
   )
)
(setq p (getpoint "\n Insert: "))
(setq oecho (getvar "cmdecho"))
(while p
   (if suff
   ;(command "text" "j" "mc" p "" "" ntxx)
   (entmake (list (cons 0 "TEXT")
      (cons 10 p)
      (cons 11 p)
      (cons 1 ntxx) ; actual text
      (cons 7 (getvar "TEXTSTYLE"))
      (cons 40 txt)
      (cons 72 4)
       )
   )
   (if pref
;(command "text" "j" "mc" p "" "" ntx)
(entmake (list (cons 0 "TEXT")
   (cons 10 p)
   (cons 11 p)
   (cons 1 ntx); actual text
   (cons 7 (getvar "TEXTSTYLE"))
   (cons 40 txt)
   (cons 72 4)
      )
    )
;(command "text" "j" "mc" p "" "" n)
(entmake (list (cons 0 "TEXT")
   (cons 10 p)
   (cons 11 p)
   (cons 1 n); actual text
   (cons 7 (getvar "TEXTSTYLE"))
   (cons 40 txt)
   (cons 72 4)
      )
    )
   )
   )
   (setq p   (getpoint "\n Next number location: ")
n   (+ ni n)
nns (itoa n)
np n
   )

   (if suff
   (if pref
(setq ntxx (strcat pref nns suff))
(setq ntxx (strcat nns suff))
   )
   )
   (if pref
   (if suff
(setq ntxx (strcat pref nns suff))
(setq ntx (strcat pref nns))
   )
   )
)
(setvar "cmdecho" oecho)
(setvar "osmode" osn)
(princ)
)
(princ "\n Type > TIT <to insert text with ascending integers.")

Adesu 发表于 2022-7-6 10:57:53

嗨,戈斯特里德,
测试这个代码也许你想这样

(defun c:test (/ ds n ni nn nns np ntx ntxx oecho osn p pre pref suf suff th ts txt)
(setq oecho (getvar "cmdecho"))
(if
   (/= oecho 0)
   (setvar "cmdecho" 0)
   ) ; if
(setq osn (getvar "osmode"))
(if
   (= 0 (getvar "dimscale"))
   (setq ds 1.0)
   (setq ds (getvar "dimscale"))
   ) ; if
(setq th (getvar "dimtxt"))
(setq txt (* th ds))   
(setq ts txt)   
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(if
   nn
   (setq nn (fix nn))
   (setq nn 1)
   ) ; if
(if (= nn 0)(setq nn 1))
(setq ni (getint (strcat "\n Increment numbers by < " (itoa nn) " >? : ")))
(if
   (= ni nil)
   (setq ni nn)
   (setq nn ni)
   ) ; if
(if
   np
   (setq np (fix np))
   (setq np nn)
   ) ; if
(setq n (getint (strcat "\n Start or continue with number < " (itoa np) " >? : ")))
(if
   (= n nil)
   (setq n np)
   (setq np n)
   ) ; if
(setq nns (itoa n))
(setq pre "A")
(setq pref (getstring t (strcat "\n Prefix text < " pre " >? or <.> for none: "))) ; ??!!
(if
   (= pref ".")
   (progn
      (setq pre nil)
      (setq pref nil)
      ) ; progn
   (progn
      (if (= pref "")
         (setq pref pre)
         (setq pre pref)
         ) ; if
      (if pref
         (setq ntx (strcat pref nns))
         ) ; if
      )    ; progn
   )       ; if
(setq suf "Z")
(setq suff (getstring t (strcat "\n Suffix text < " suf " >? or <.> for none: ")))
(if
   (= suff ".")
   (progn
      (setq suf nil)
      (setq suff nil)
      ) ; progn
   (progn
      (if (= suff "")
         (setq suff suf)
         (setq suf suff)
         ) ; if
      (if suff
         (if pref
            (setq ntxx (strcat pref nns suff))
            (setq ntxx (strcat nns suff))
            ) ; if
         )    ; if
      )       ; progn
   )          ; if
(setq p (getpoint "\n Insert: "))
(while
   p
   (if
      suff
      (entmake (list (cons 0 "TEXT")
                     (cons 10 p)
                     (cons 11 p)
                     (cons 1 ntxx) ; actual text
                     (cons 7 (getvar "TEXTSTYLE"))
                     (cons 40 txt)
                     (cons 72 4)))
      (if
         pref
         (entmake (list (cons 0 "TEXT")
                        (cons 10 p)
                        (cons 11 p)
                        (cons 1 ntx); actual text
                        (cons 7 (getvar "TEXTSTYLE"))
                        (cons 40 txt)
                        (cons 72 4)))
         (entmake (list (cons 0 "TEXT")
                        (cons 10 p)
                        (cons 11 p)
                        (cons 1 n); actual text
                        (cons 7 (getvar "TEXTSTYLE"))
                        (cons 40 txt)
                        (cons 72 4)))
         ) ; if
      )    ; if
   (command "polygon" "5" p "c" (* ts 1.5))
   (setq p (getpoint "\n Next number location: "))
   (setq n (+ ni n))
   (setq nns (itoa n))
   (if
      suff
      (if
         pref
         (setq ntxx (strcat pref nns suff))
         (setq ntxx (strcat nns suff))
         ) ; if
      )    ; if
   (if
      pref
      (if
         suff
         (setq ntxx (strcat pref nns suff))
         (setq ntx (strcat pref nns))
         ) ; if
      )    ; if
   )       ; while
(setvar "cmdecho" oecho)
(setvar "osmode" osn)
(princ)
)

GhostRider 发表于 2022-7-6 11:15:39

阿,非常感谢你抽出时间为我做这件事。我经常用这个。我以为我能弄明白,但这比我所理解的要先进一点。
它工作得很好。。。

Adesu 发表于 2022-7-6 11:22:11

不客气

jcap91163 发表于 2022-7-6 11:44:41

很好,非常感谢
页: [1]
查看完整版本: 有可能把这些结合起来吗