明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1122|回复: 4

[提问] 求帮完善电气接线图批量折弯程序

[复制链接]
发表于 2016-7-20 15:56:18 | 显示全部楼层 |阅读模式
;;;  修改 荒野孤行 的不修剪圆角程序而来
;;;  bug:倒角后汇合线上有重叠线未删除,我想用;(if (<= len2 len3)(progn (vla-delete obj2)(ssadd ent3 ent2))(vla-delete obj3))这句来删除,但程序无法往下循环,不知是否是删除了ent2引起的?用(ssadd ent3 ent2)把ent3转为ent2可以吗?到底错在哪?请帮忙指点并完善。

程序如下:
  1. (defun c:bz (/ dd1 dd2 backup_dd1 backup_dd2 i ss ent1 ent2 ent3)
  2.   (setvar "OSMODE" 15359)
  3.   (setvar "CMDECHO" 0)
  4.   (princ "\n★功能:将两线进行倒角但不修剪。\n提示:若要完成结束请按空格键或Enter键,这样撤销操作可一步到位!\n")
  5.   (vl-load-com)
  6.   (setq backup_dd1 (getvar "CHAMFERA")
  7.         backup_dd2 (getvar "CHAMFERB"))
  8.   (initget 4)
  9.   (if (not (setq dd1 (getreal (strcat "\n输入倒角距离:<" (rtos backup_dd1) ">"))))
  10.     (setq dd1 backup_dd1  dd2 backup_dd2)
  11.   )
  12.   (setvar "CHAMFERA" dd1)
  13.   (setvar "CHAMFERB" dd1)
  14.   (command "undo" "be")
  15.   (setvar "OSMODE" 0)
  16.   (princ  "\n选择一根或一组线折弯:")
  17.   (setq ss (ssget '((0 . "line"))))
  18.   (setq ent2 (entsel "\n选择一条汇合线(选择位置决定折弯方向):"))
  19.   (setq i 0);;;
  20.   (while (< i (sslength ss));;;
  21.     (setq ent1 (ssname ss i));;;
  22.     (command "copy"  (car ent2) "" '(0 0) '(0 0))
  23.     (setq ent3 (entlast)
  24.           obj3 (vlax-ename->vla-object ent3)
  25.           len3 (vlax-curve-getdistatparam  obj3 (vlax-curve-getendparam obj3)))
  26.     (command "chamfer" "T" "T" ent1 ent2)
  27.     (setq obj2 (vlax-ename->vla-object (car ent2))
  28.           len2 (vlax-curve-getdistatparam  obj2 (vlax-curve-getendparam obj2)))
  29.     ;(if (<= len2 len3)(progn (vla-delete obj2)(ssadd ent3 ent2))(vla-delete obj3))
  30.     (princ)
  31.     (setq i (+ i 1));;;
  32.   )
  33.   (command "undo" "e")
  34.   (setvar "OSMODE" 15359)
  35.   (princ)
  36. )

本帖子中包含更多资源

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

x
发表于 2016-7-20 16:38:48 | 显示全部楼层
这种没必要调用CHAMFER命令,直接计算直线顶点坐标修改原始直线并entmake倒角直线。
 楼主| 发表于 2016-7-21 08:11:56 | 显示全部楼层
kozmosovia 发表于 2016-7-20 16:38
这种没必要调用CHAMFER命令,直接计算直线顶点坐标修改原始直线并entmake倒角直线。

你的思路很妙,我试试。不过,我还是想知道现在的方法错在哪?
发表于 2016-7-21 09:35:49 | 显示全部楼层
ENT2的数据类型是(ENAME,POINT),之不能SSADD的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-2-23 11:30 , Processed in 0.196361 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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