d0n 发表于 2022-7-6 09:18:03

lisp到ddedit维度

你好,
 
我想知道是否可以使用lisp来执行以下操作:
 
D编辑维度,使其以3“、6“9”或0”结尾,但始终向下舍入。
 
所以10'-10“应该是10'-9”,以此类推。。
 
谢谢你的帮助!

Tharwat 发表于 2022-7-6 09:32:45

欢迎来到论坛。
 
看看这个。。。。
 

(defun c:Test (/ Three Six Nine ss sideA sideB dis p pt)
; Tharwat 14. 06. 2011
(setq Three (* 25.4 3.) Six   (* 25.4 6.) Nine(* 25.4 9.))
(if
   (and
   (setq ss (car (entsel "\n Select a Dimension :")))
   (eq (cdr (assoc 0 (setq e (entget ss)))) "DIMENSION")
   )
    (progn
      (setq sideA (cdr (assoc 13 e)))
      (setq sideB (cdr (assoc 14 e)))
      (setq dis (distance sideA sideB))
      (if (eq
            (car sideA)
            (car sideB)
          )
      (setq p sideB)
      (setq p sideA)
      )

      (cond (
             (and (> dis 0.) (< dis Six))
             (setq pt (polar p (angle sideA sideB) Three))
            )
            (
             (and (> dis Six) (< dis Nine))
             (setq pt (polar p (angle sideA sideB) Six))
            )
            (
             (> dis Nine)
             (setq pt (polar p (angle sideA sideB) Nine))
            )
      )
      (entupd
      (cdr (assoc -1 (entmod (subst (cons 14 pt) (assoc 14 e) e)))
      )
      )
    )
    (princ)
)
(princ)
)

 
塔瓦特

Lee Mac 发表于 2022-7-6 09:37:18

如果我正确理解了你的目标,这应该会奏效:
 
(defun c:测试(/dm en ft in)(if(and(setq en(car(entsel)\ n选择维度:))(eq“Dimension”(cdr(assoc 0(entget en)))))(progn(setq en(entget en)dm(cdr(assoc 42 en))ft(fix(/dm 12))in(rem dm 12)(setq in(cond(<in 3)0)((和(

Guest kruuger 发表于 2022-7-6 09:43:58

如果要替代尺寸,只需转到dimstyle并将舍入设置为3。lisp不是必需的。
克鲁格

Lee Mac 发表于 2022-7-6 09:57:39

 
打得好,克鲁格-这一次我错失良机

Tharwat 发表于 2022-7-6 10:05:21

 
好的观点,克鲁格,我也没有得到点的OP与他们的小字从日常需要。
 
谢谢

d0n 发表于 2022-7-6 10:17:59

哈哈,打得好,我以为我试过了,但没用,我想现在可以了

d0n 发表于 2022-7-6 10:22:49

大家好,请记住为什么dimstyle中的舍入在我的情况下不起作用,因为它将向上取整,因为我只希望它向下取整。
 
我会试试你们创造的Lisp程序,谢谢!
页: [1]
查看完整版本: lisp到ddedit维度