明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: KO你

[提问] 求贱人工具的折断线

[复制链接]
 楼主| 发表于 2025-7-7 17:40:21 | 显示全部楼层
本帖最后由 KO你 于 2025-7-13 00:40 编辑

怎么把以下代码合并到一起,增加面板功能,命令Y运行面板操作呢
请高手完善

快捷键  y1  画单折断线
(defun c:y1 (/ lay pt1 pt2 dis x1 ang pt3 pt4 pt5 pt6 ss ptt osd scale-temp extend-temp)
(vl-load-com)
(if (not (boundp '*scale*)) (setq *scale* 1.0))
(if (not (boundp '*extend*)) (setq *extend* 0.0))
(setvar "CMDECHO" 0)
(setq scale-temp (getreal (strcat "\n比例大小<" (rtos *scale* 2 2) ">: ")))
(setq *scale* (if scale-temp scale-temp *scale*))
(setq extend-temp (getreal (strcat "\n两头延长<" (rtos *extend* 2 2) ">: ")))
(setq *extend* (if extend-temp extend-temp *extend*))
(setq osd (getvar "osmode"))
(while T
(setq lay (getvar "clayer"))
(if (setq pt1 (getpoint "\n起点: "))
(progn(if (setq pt2 (getpoint pt1 "\n终点: "))
(progn(setq ang (angle pt1 pt2))
(setq dis (distance pt1 pt2))
(setq pt1 (polar pt1 (+ ang pi) *extend*))
(setq pt2 (polar pt2 ang *extend*))
(setq ang (angle pt1 pt2))
(setq dis (distance pt1 pt2))
(setq x1 (/ (- dis (* 2 *scale*)) 2))
(setq pt3 (polar pt1 ang x1))
(setq pt4 (polar pt1 ang (+ x1 (* 2 *scale*))))
(setq pt5 (polar pt3 (+ ang 1.32582) (* 2.0616 *scale*)))
(setq pt6 (polar pt4 (- ang 1.81577) (* 2.0616 *scale*)))
(setvar "osmode" 0)
(command "pline" pt1 "w" "0" "0" pt3 pt5 pt6 pt4 pt2 "")
(command "layer" "s" lay "")
(setvar "osmode" osd))
(progn(setvar "osmode" osd)(exit))))
(progn(setvar "osmode" osd)(exit))))
(princ))

快捷键  y2  画双折断线
(defun c:y2 (/ lay pt1 pt2 dis x1 ang pt3 pt4 pt5 pt6 up off osd orig_pt1 orig_pt2)
(vl-load-com)
(if (not (boundp '*scale*)) (setq *scale* 1))
(if (not (boundp '*extend*)) (setq *extend* 0.0))
(setvar "CMDECHO" 0)
(setq scale-temp (getreal (strcat "\n比例大小<" (rtos *scale* 2 2) ">: ")))
(setq *scale* (if scale-temp scale-temp *scale*))
(setq extend-temp (getreal (strcat "\n两头延长<" (rtos *extend* 2 2) ">: ")))
(setq *extend* (if extend-temp extend-temp *extend*))
(setq osd (getvar "osmode"))
(while T
(setq lay (getvar "clayer"))
(if (setq orig_pt1 (getpoint "\n起点: "))
(progn(if (setq orig_pt2 (getpoint orig_pt1 "\n终点: "))
(progn(setq ang (angle orig_pt1 orig_pt2))
(setq pt1 (polar orig_pt1 (+ ang pi) *extend*))
(setq pt2 (polar orig_pt2 ang *extend*))
(setq ang (angle pt1 pt2)
dis (distance pt1 pt2)
x1 (/ (- dis (* 2 *scale*)) 2)
off (* *scale* 0.5)
up (+ ang (/ pi 2))
dn (- ang (/ pi 2)))
(setq pt3 (polar pt1 ang x1)
pt4 (polar pt1 ang (+ x1 (* 2 *scale*)))
pt5 (polar pt3 (+ ang 1.32582) (* 2.0616 *scale*))
pt6 (polar pt4 (- ang 1.81577) (* 2.0616 *scale*)))
(setq base_pts (list pt1 pt3 pt5 pt6 pt4 pt2))
(setvar "osmode" 0)
(command "pline")
(foreach pt base_pts (command (polar pt up off)))
(command "")
(command "pline")
(foreach pt base_pts (command (polar pt dn off)))
(command "")
(command "layer" "s" lay "")
(setvar "osmode" osd))
(progn(setvar "osmode" osd)(exit))))
(progn(setvar "osmode" osd)(exit))))
(princ))

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-7-8 11:34:18 | 显示全部楼层


;; 非源码,请慎重下载!

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2025-7-8 13:29:25 | 显示全部楼层
xyp1964 发表于 2025-7-8 11:34
;; 非源码,请慎重下载!

院长快手
回复

使用道具 举报

 楼主| 发表于 2025-7-13 00:43:02 | 显示全部楼层
KO你 发表于 2025-7-7 17:40
怎么把以下代码合并到一起,增加面板功能,命令Y运行面板操作呢
请高手完善

以上已经更新了连续绘制
请高手帮忙合并一下以上代码,根据我的截图增加面板操作
回复

使用道具 举报

发表于 2025-7-15 11:12:59 | 显示全部楼层
本帖最后由 guankuiwu 于 2025-7-15 11:28 编辑

这个你自己都可以丢给ds来完善的吧想法最重要。你再看着完善一下。

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2025-7-15 17:16:58 | 显示全部楼层
guankuiwu 发表于 2025-7-15 11:12
这个你自己都可以丢给ds来完善的吧想法最重要。你再看着完善一下。

你的面板和院长的差不多,我是想面板和我截图一样,少了确定那个按钮,直接点单折线或双折线就进入绘制了。试过用AI辅助优化,但AI弄出来的代码面板老是出现语法错误,所以很不想靠AI来实现
回复

使用道具 举报

发表于 2025-7-16 08:51:06 | 显示全部楼层
(defun c:pzh(/ p1 p2 qd zd zzd1 zzd2 zzd3 zzd4);破折号函数
  (setq p1 (getpoint))
  (setq p2 (getpoint p1))
  
  (setq qd (polar p1 (angle p2 p1) (/ (distance p1 p2) 4)))
  (setq zd (polar qd (angle p1 p2) (+ (distance p1 p2) (* 2 (/ (distance p1 p2) 4)))))
  (setq zzd1 (polar qd (angle p1 p2) (* 0.65 (distance p1 p2))))
  (setq zzd2 (polar zzd1 (+ (/ (* 108 pi) 180) (angle p2 p1)) (* 0.13 (distance p1 p2))))
  (setq zzd4 (polar zd (angle p2 p1) (* 0.65 (distance p1 p2))))
  (setq zzd3 (polar zzd4 (+ (/ (* 108 pi) 180) (angle p1 p2)) (* 0.13 (distance p1 p2))))
  (command "layer" "m" "绘图线" "c" "7" "绘图线" "l" "Continuous" "绘图线" "LW" "0.35" "绘图线" "")
  (setvar "osmode" 0)
  (command "pline" qd zzd1 zzd2 zzd3 zzd4 zd "")
  (setvar "osmode" 16383)
  )
这个我平时自己用的 根据两点画出一个折断线
回复

使用道具 举报

发表于 2025-7-16 11:42:23 | 显示全部楼层
本帖最后由 guankuiwu 于 2025-7-16 16:40 编辑
KO你 发表于 2025-7-15 17:16
你的面板和院长的差不多,我是想面板和我截图一样,少了确定那个按钮,直接点单折线或双折线就进入绘制了 ...

你那面板也好实现,不太理解为啥要这样。本身带记忆的,勾选一次以后都是一样的只按一次按钮。个人感觉那样更合理

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2025-7-16 21:58:14 | 显示全部楼层
本帖最后由 KO你 于 2025-7-16 22:23 编辑
guankuiwu 发表于 2025-7-16 11:42
你那面板也好实现,不太理解为啥要这样。本身带记忆的,勾选一次以后都是一样的只按一次按钮 ...

兄弟,能分享下更新出来的吗,延伸折断线-折断头那个形状参考我9楼截图那个就好看
你那个新加的双折线面板可以写到成双折线2
单折线
双折线1
双折线2

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2025-7-17 14:11:08 | 显示全部楼层
KO你 发表于 2025-7-16 21:58
兄弟,能分享下更新出来的吗,延伸折断线-折断头那个形状参考我9楼截图那个就好看
你那个新加的双折线面 ...

好吧!见最终修改的附件。那个勾默认一直选上就可以了。奖励拿来

本帖子中包含更多资源

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

x
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-14 13:44 , Processed in 0.202555 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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