明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: Jack_PC

[基础] 修剪出错

  [复制链接]
发表于 2011-7-19 08:33:21 | 显示全部楼层
试用这个吧
;; 祥子 增修版

  1. (Defun C:Rer (/ pt1 pt2 r os)
  2.   (Initget 1)
  3.   (Setq pt1 (Getpoint "\n 指定左下角点: "))
  4.   (Initget 3)
  5.   (setq pt2 (getcorner pt1 "\n请指定对角点:"))
  6.   (setq os (getvar 'osmode))

  7.   (Setvar "Cmdecho" 0)
  8.   (Setvar "osmode" 0)
  9.   (Command "Rectangle" Pt1 pt2)
  10.   (Initget 4)
  11.   (setq svR (getVar "FilletRad"))
  12.   (Setq R
  13.     (Getreal
  14.       (strcat
  15.         "\n 指定圆角半径 <"
  16.         (Rtos svR)
  17.         ">: "
  18.   ) ) )   
  19.   (If R
  20.     Null
  21.    (Setq R svR)
  22.   )
  23.   (Setvar "Filletrad" R)
  24.   (Command "Fillet" "P" (Entlast))
  25.   (setvar 'osmode os)
  26.   (Prin1)
  27. )
发表于 2011-7-19 10:53:14 | 显示全部楼层
本帖最后由 ljpnb 于 2011-7-20 22:08 编辑

这个试试:

  1. (Defun C:tt (/ pt1 pt2 r os)
  2.   (Initget 1)
  3.   (Setq pt1 (Getpoint "\n 指定矩形第一个角点: "))
  4.   (Initget 3)
  5.   (setq pt2 (getcorner pt1 "\n请指定对角点:"))
  6.   (setq os (getvar 'osmode))
  7.   (Setvar "osmode" 0)
  8.   (Setvar "Cmdecho" 0)
  9.   (setq ss (ssget "c" pt1 pt2))
  10.   (if (= (cdr (assoc 0 (entget (ssname ss 0)))) "LINE")
  11.     (progn
  12.       (Command "pedit" (ssname ss 0) "" "j" ss "" "")
  13.       (setq en (entlast))
  14.     )
  15.     (setq en (ssname ss 0))
  16.   )
  17.   (Initget 4)
  18.   (setq svR (getVar "FilletRad"))
  19.   (Setq R
  20.   (Getreal
  21.     (strcat
  22.       "\n 指定圆角半径 <"
  23.       (Rtos svR)
  24.       ">: "
  25.     )
  26.   )
  27.   )
  28.   (If R
  29.     Null
  30.     (Setq R svR)
  31.   )
  32.   (Setvar "Filletrad" R)
  33.   (Command "Fillet" "P" en)
  34.   (command "explode" en)
  35.   (setvar 'osmode os)
  36.   (PrinC)
  37. )
 楼主| 发表于 2011-7-19 19:55:57 | 显示全部楼层
非常感谢各位!
  可能还是我没有表达清楚,我的意思是,这个长方形是用手工在CAD中画的,需要用程序指定长方形的两个对角点,实现倒R角
发表于 2011-7-19 22:58:31 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-19 23:07 编辑

你应该发个图上来说明原来的图是什么样的,程序运行后的结果是什么样的,你想怎样操作,或者怎样操作无所谓只要结果。
 楼主| 发表于 2011-7-20 01:45:38 | 显示全部楼层
本帖最后由 Jack_PC 于 2011-7-20 01:49 编辑
zhynt 发表于 2011-7-19 22:58
你应该发个图上来说明原来的图是什么样的,程序运行后的结果是什么样的,你想怎样操作,或者怎样操作无所谓 ...


我前面发了图片上来,请看下面的图片效果,程序运行前是一个手工已画好没有倒R角的长方形,程序运行之后,只是长方形增加了倒R角.

本帖子中包含更多资源

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

x
发表于 2011-7-20 02:34:26 | 显示全部楼层
本帖最后由 zhynt 于 2011-7-20 02:36 编辑

这个程序不就是你想要的吗?
程序在15楼

本帖子中包含更多资源

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

x
发表于 2011-7-20 08:52:58 | 显示全部楼层
zhynt 发表于 2011-7-20 02:34
这个程序不就是你想要的吗?
程序在15楼

人家那些矩形不是用rectang画的,是由四条线组成的。。。
发表于 2011-7-20 09:23:09 | 显示全部楼层
那就先变成矩形再倒角
发表于 2011-7-20 09:42:47 | 显示全部楼层
那就这样咯:

  1. (defun c:test ()
  2.   (setq tf T)
  3.   (setq ptn (getpoint "\n指定一个角点:"))
  4.   (while tf
  5.     (initget "R")
  6.     (setq ptm (getcorner ptn (strcat "\n指定另一个角点,一次选一个矩形。[圆角半径(R)]:<"
  7.                              (rtos (setq fil (getvar "FILLETRAD")))
  8.                              ">"))
  9.     )
  10.     (cond
  11.       ((= ptm "R")
  12.        (setq fil (getreal (strcat "\n指定圆角半径:<"
  13.                                   (rtos (getvar "FILLETRAD"))
  14.                                   ">"))
  15.        )
  16.        (if (= fil nil)
  17.          (setq fil (getvar "FILLETRAD"))
  18.          (setvar "FILLETRAD" fil)
  19.        )
  20.       )
  21.       ((= (type ptm) 'list)
  22.        (setq tf nil)
  23.        (setq ss (ssget "w" ptn ptm))
  24.        (command        "PEDIT" (ssname ss 0)"Y" "J"(ssname ss 1)(ssname ss 2)(ssname ss 3)"" "")
  25.        (setq en (entlast))
  26.        (command "FILLET" "P" en)
  27.        (command "EXPLODE" en)
  28.       )
  29.     )
  30.   )
  31. )
 楼主| 发表于 2011-7-20 18:52:26 | 显示全部楼层
zhynt 发表于 2011-7-20 09:42
那就这样咯:

非常感谢你的热心,虽不是我需要的结果,但是也从你的例子中学到了以前不知道的内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-9 20:05 , Processed in 0.172903 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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