pizi158545086 发表于 2023-8-4 11:40:10

请求下大佬帮忙把这个倒凹角的源码调整下 把线都连接起来 谢谢


命令操作模式类似于CHA 倒切角命令
输入命令,提示:当前倒角距离 1 = 0.0000,距离 2 = 0.0000
选择第一条直线或距离【D】;如果选择D 指定距离1:输入数值(默认10)然后 指定距离2 (距离2默认与距离1数值一样也可输入数值 )
命令支持 矩形 多段线 直线等(与倒角命令适用对象一直就好)

这段源码完成需求后线是断开的,请求下大佬帮忙把线连接一起变成多段线

(DEFUN C:HTJ (/      GETLINE      VLINE1 VLINE2 DL1 DL2 PT1 PT2 PT3 PT4 PT5 PT6
            PT7 ANG1 ANG2 H3)
(setq      cm (getvar "cmdecho")
      os (getvar "osmode")
)
(if (= htj_h1 nil)
    (progn (print "当前默认第一条倒角距离:5 第二条倒角距离:5")
         (print)
    )
    (progn (print (strcat "当前第一条倒角距离:"
                        (rtos htj_h1)
                        ";第二条倒角距离:"
                        (rtos htj_h2)
                  )
         )
         (print)
    )
)
(if (= "s" (getstring "[<S>设置倒角距离/<空格>跳过]:"))
    (progn
      (setq htj_h1 (getreal "\n请输入第一条边倒角距离:"))
      (setq htj_h2 (getreal "\n请输入第二条边倒角距离:"))
    )
    (if      htj_h1 htj_h2
      (setq htj_h1 5
            htj_h2 5
      )
    )
)
(while
    (defun getline (msg / a1 po)
      (setvar "osmode" 512)
      (setq po (getpoint msg))
      (if (= po nil)
      (progn
          (princ "\n未选取对象,退出.")
          (setvar "osmode" os)
          (exit)
      )
      (progn
          (setq a1 (ssname (ssget po po) 0))
          (cond      ((= (cdr (assoc 0 (entget a1))) "LWPOLYLINE")
               (command "_.explode" A1)
               (setq a1 (ssname (ssget po po) 0))
                )
                ((= (cdr (assoc 0 (entget a1))) "LINE")
               (setq a1 a1)
                )
                ((/= (cdr (assoc 0 (entget a1))) "LINE")
               (PRINC "\n您选的不是线,请再选一次:")
               (setq po (getpoint msg))
               (setq a1 (ssname (ssget po po) 0))
                )
          )
      )
      )
    )
   (SETQ VLINE1 (GETLINE "\n请选取第一条线: "))
   (SETQ VLINE2 (GETLINE "\n请选取第二条线: "))
   (setvar "osmode" 0)
   (SETQ DL1 (ENTGET VLINE1)
         DL2 (ENTGET VLINE2)
         PT1 (CDR (ASSOC 10 DL1))
         PT2 (CDR (ASSOC 11 DL1))
         PT3 (CDR (ASSOC 10 DL2))
         PT4 (CDR (ASSOC 11 DL2))
         PT5 (INTERS PT1 PT2 PT3 PT4 nil)
   )
   (IF (/= PT5 nil)
       (PROGN
         (SETQ PT2(IF      (< (DISTANCE PT5 PT1) (DISTANCE PT5 PT2))
                      PT2
                      PT1
                  )
               PT4(IF      (< (DISTANCE PT5 PT3) (DISTANCE PT5 PT4))
                      PT4
                      PT3
                  )
               ANG1 (ANGLE PT5 PT2)
               ANG2 (ANGLE PT5 PT4)
               PT1(POLAR PT5 ANG1 htj_h1)
               PT3(POLAR PT5 ANG2 htj_h2)
               PT5(POLAR PT3 ANG1 htj_h1)
         )
         (ENTDEL VLINE1)
         (ENTDEL VLINE2)
         (COMMAND "PLINE" PT2 PT1 PT5 PT3 PT4 "")
         (COMMAND "EXPLODE" (entlast))
       )
       (T (PRINC "\n两直线无交点!"))
   )
)
(setvar "osmode" os)
(PRINC)
)

嘒彼小星 发表于 2023-8-4 16:50:45

本帖最后由 嘒彼小星 于 2023-8-4 17:06 编辑

试试在这个命令上加注释。及
(COMMAND "EXPLODE" (entlast))
改为
;(COMMAND "EXPLODE" (entlast))
就是(comm这里的括号前加英文状态下的分号,
或者把这一行(COMMAND "EXPLODE" (entlast))删掉试试。

pizi158545086 发表于 2023-8-4 17:50:40

嘒彼小星 发表于 2023-8-4 16:50
试试在这个命令上加注释。及

改为


两个都试了 只有倒角旁边相连的线连一起其他线都断开了

xyp1964 发表于 2023-8-5 07:41:33


Noangler 发表于 2023-8-5 13:08:06

xyp1964 发表于 2023-8-5 07:41


ssyfeng 发表于 2023-8-5 13:42:46

倒内凹角:


页: [1]
查看完整版本: 请求下大佬帮忙把这个倒凹角的源码调整下 把线都连接起来 谢谢