明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 958620832

[已解答] 关于倒角的一个问题

[复制链接]
发表于 2013-11-18 08:35 | 显示全部楼层
本帖最后由 llsheng_73 于 2013-11-18 08:37 编辑
958620832 发表于 2013-11-18 08:33
非常感谢你的帮助,但还是不够完善啊。
问题在于,多段线不一定是直的,还可以是折的。对于只有两个顶点 ...

你能不能一次把所有要求及要处理的特殊情况说完
还有没有别的什么情况,等你5分钟,没有就只是前边所说的了
回复

使用道具 举报

 楼主| 发表于 2013-11-18 08:38 | 显示全部楼层
llsheng_73 发表于 2013-11-18 08:35
你能不能一次把所有要求及要处理的特殊情况说完

我说了,见7#,只不过没有图示,没有那么直观。引用7楼如下:
“是我没有表述清楚。之前,倒角我用的都是cad系统本身就有的chamfer或者FILLET命令,但后来发现它的某一方面的功能对我来说有点多余,就是,只要两条线中有一条是多段线,倒角的结果就是将两条线合并为一条多段线,并且颜色、线型、线宽都同一了,我想将这一个功能取消,但其他功能都保留,想找个能替代chamfer或者FILLET命令的程序,只是本人编写lisp程序水平有限,始终都编不出来,于是就求助于各位高手。”
回复

使用道具 举报

发表于 2013-11-18 09:00 | 显示全部楼层
958620832 发表于 2013-11-18 08:38
我说了,见7#,只不过没有图示,没有那么直观。引用7楼如下:
“是我没有表述清楚。之前,倒角我用的都是 ...

限于水平无法一次性理解你的描述
回复

使用道具 举报

发表于 2013-11-18 17:02 | 显示全部楼层
liu22737 发表于 2013-11-18 16:58
管他有什么要求,直接调用AUTOCAD原始命令啊

(defun c:tt(/ b2 a2)

AUTOCAD命令很多版本之间它可能会有细微差别
回复

使用道具 举报

发表于 2013-11-18 19:00 | 显示全部楼层
liu22737 发表于 2013-11-18 16:58
管他有什么要求,直接调用AUTOCAD原始命令啊

(defun c:tt(/ b2 a2)

嗯,这个思路是极好的
回复

使用道具 举报

发表于 2013-11-18 20:00 | 显示全部楼层
llsheng_73 发表于 2013-11-18 08:35
你能不能一次把所有要求及要处理的特殊情况说完
还有没有别的什么情况,等你5分钟,没有就只是前边 ...

表示支持、理解及
回复

使用道具 举报

发表于 2013-11-19 08:55 | 显示全部楼层
llsheng_73 发表于 2013-11-18 17:02
AUTOCAD命令很多版本之间它可能会有细微差别

版本不同可能会有差别,最主要是系统变量对命令影响很大,
这要在自己电脑上调试,尽量不要随便更改变量,

另外我觉得我们很难写一个FILLET命令,倒角时遇到的情况太复杂了,线,射线,圆弧,椭圆,样条线,多义线等,你匆忙写的程式很难达到要求,其实楼主要的功能很单一,提供个简单思路自己写呗,
最好要求AUTOCAD公司提供一个这样的变量控制它
回复

使用道具 举报

 楼主| 发表于 2013-11-19 18:07 | 显示全部楼层
本帖最后由 958620832 于 2013-11-21 08:22 编辑
liu22737 发表于 2013-11-18 16:58
管他有什么要求,直接调用AUTOCAD原始命令啊

(defun c:tt(/ b2 a2)

思路不错,根据你提出的思路,编出来了,也试验成功了。
(defun c:f (/ ent1 ent2 ent3 ent4) ;;;仅适用于直线(LINE)、多段线(POLYLINE和LWPOLYLINE两种)
  (setq obj1 (entsel) obj2 (entsel))
  (setq e1 (car obj1) e2 (car obj2) p1 (cadr obj1) p2 (cadr obj2))
  (setq ent1 (entget e1) ent2 (entget e2) ty1 (cdr (assoc 0 ent1)) ty2 (cdr (assoc 0 ent2)))
  (vl-cmdf "chamfer" p1 p2) ;第一步,倒角
  (setq e3 (car (nentselp p1)))
  (if (or (= ty1 "LWPOLYLINE") (= ty2 "LWPOLYLINE") (= ty1 "POLYLINE") (= ty2 "POLYLINE")) (progn
    (vl-cmdf "BREAK" e3 "int" p1 p2 "int" p1 p2) ;第二步,打断
    (setq e3 (car (nentselp p1)) e4 (car (nentselp p2)))
    (setq ent3 (entget e3) ent4 (entget e4))
    (if (= ty1 "LINE") (progn (vl-cmdf "explode" e3 "") (setq e3 (car (nentselp p1))) (setq ent3 (entget e3))))
    (if (= ty2 "LINE") (progn (vl-cmdf "explode" e4 "") (setq e4 (car (nentselp p2))) (setq ent4 (entget e4))))
    ;第三步,属性还原(ent1还原ent3,ent2还原ent4),还原属性共有颜色(62)、线型(6)、比例(48)三种
    (setq ys1 (if (assoc 62 ent1) (assoc 62 ent1) (cons 62 256)) xx1 (if (assoc 6 ent1) (assoc 6 ent1) (cons 6 "bylayer")))
    (setq ys3 (if (assoc 62 ent3) (assoc 62 ent3)) xx3 (if (assoc 6 ent3) (assoc 6 ent3)))
    (setq ys2 (if (assoc 62 ent2) (assoc 62 ent2) (cons 62 256)) xx2 (if (assoc 6 ent2) (assoc 6 ent2) (cons 6 "bylayer")))
    (setq ys4 (if (assoc 62 ent4) (assoc 62 ent4)) xx4 (if (assoc 6 ent4) (assoc 6 ent4)))
    (setq bl1 (if (assoc 48 ent1) (assoc 48 ent1) (cons 48 1)) bl2 (if (assoc 48 ent2) (assoc 48 ent2) (cons 48 1)))
    (setq bl3 (if (assoc 48 ent3) (assoc 48 ent3)) bl4 (if (assoc 48 ent4) (assoc 48 ent4)))
    (setq ent3 (if ys3 (subst ys1 ys3 ent3) (append ent3 (list ys1))))
    (setq ent3 (if xx3 (subst xx1 xx3 ent3) (append ent3 (list xx1))))
    (setq ent3 (if bl3 (subst bl1 bl3 ent3) (append ent3 (list bl1))))
    (entmod ent3)
    (setq ent4 (if ys4 (subst ys2 ys4 ent4) (append ent4 (list ys2))))
    (setq ent4 (if xx4 (subst xx2 xx4 ent4) (append ent4 (list xx2))))
    (setq ent4 (if bl4 (subst bl2 bl4 ent4) (append ent4 (list bl2))))
    (entmod ent4)))
  (princ))

评分

参与人数 1明经币 +1 收起 理由
bzhjl + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2013-11-20 13:03 | 显示全部楼层
楼主这是在设置闯关游戏吧
回复

使用道具 举报

 楼主| 发表于 2013-11-20 18:37 | 显示全部楼层
ou_y_x 发表于 2013-11-20 13:03
楼主这是在设置闯关游戏吧

楼主向诸位保证,楼主绝不是那种吃饱了撑着没事干的人,没事找事。
事先,我的确不知道程序怎么编写的。后来,根据网友提供的思路才编出来的。既然有人提供了思路,有没有一个人愿意编下去,那我就只好自己编了。只要有了一个好的思路,编程应该不难。我将程序编出来,目的在于让有些lisp刚入门的人学习学习。我很乐意奉献自己的经验,绝不像有些人那样保守。

评分

参与人数 1明经币 +1 收起 理由
bzhjl + 1 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 16:55 , Processed in 0.190519 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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