明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 749|回复: 5

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

[复制链接]
发表于 2023-8-4 11:40:10 | 显示全部楼层 |阅读模式
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 编辑

试试在这个命令上加注释。及
  1. (COMMAND "EXPLODE" (entlast))

改为
  1. ;(COMMAND "EXPLODE" (entlast))
复制代码

就是(comm这里的括号前加英文状态下的分号,
或者把这一行(COMMAND "EXPLODE" (entlast))删掉试试。
回复

使用道具 举报

 楼主| 发表于 2023-8-4 17:50:40 | 显示全部楼层
嘒彼小星 发表于 2023-8-4 16:50
试试在这个命令上加注释。及

改为

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

使用道具 举报

发表于 2023-8-5 07:41:33 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 2023-8-5 13:08:06 | 显示全部楼层
回复

使用道具 举报

发表于 2023-8-5 13:42:46 | 显示全部楼层
倒内凹角:


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:53 , Processed in 0.154738 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表