明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1464|回复: 2

能否帮助更改附件程序(谢谢)

[复制链接]
发表于 2008-7-5 10:06:00 | 显示全部楼层 |阅读模式

 

程序执行效果如图1

更改后效果如图2

更改内容:

1、圆弧方向正好相反

2、增加中心线,线型CENTER,长度随意,视觉效果好即可

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2008-7-5 11:03:00 | 显示全部楼层
画园弧用到XDATA中的数据,没时间理清你的数据格式,换位思考,我在最后用了MIRROR达到你的效果.
  1. (defun c:test (/)
  2.     (initget 1)(setq p1 (getpoint "\n First point: "))
  3.     (initget 1)(setq p2 (getpoint p1 "\n First point: "))
  4.     (if (/= 'REAL  (type logocad:pipe_size)) (setq logocad:pipe_size 100))
  5.     (setq
  6.         msg        (strcat "\n PIPE SIZE <" (rtos logocad:pipe_size 2 2) ">: ")
  7.         tmp        (getreal msg)
  8.     ) ; end setq
  9.     (if (and (not (null tmp))(numberp tmp)(> tmp 0)) (setq logocad:pipe_size tmp))
  10.     (setq
  11.         ang        (angle p1 p2)
  12.         perang1    (+ ang (/ pi 2.0))
  13.         perang2    (- ang (/ pi 2.0))
  14.         offsz    (/ logocad:pipe_size 2)
  15.         dp1        (polar p1 perang1 offsz)
  16.         dp2        (polar p2 perang1 offsz)
  17.         dp3        (polar p1 perang2 offsz)
  18.         dp4        (polar p2 perang2 offsz)
  19.         plist    (list (list dp1 dp2) (list dp3 dp4))
  20.         rdst    (/ logocad:pipe_size 4)
  21.         ang1    (angle p1 dp1)
  22.         ang2    (angle p1 p2)
  23.         ang3    (angle p1 dp3)
  24.         xdata    (list
  25.                 (list p1 dp1 ang1 ang2 nil T)
  26.                 (list p1 dp1 ang1 (+ pi ang2) T nil)
  27.                 (list dp3 p1 ang1 ang2 nil nil)
  28.                 (list p2 dp2 ang1 (+ pi ang2) T nil)
  29.                 (list dp4 p2 ang1 (+ pi ang2) T T)
  30.                 (list dp4 p2 ang1 ang2 nil nil)
  31.   
  32.                 ) ; end list
  33.         rad        (* (- 1 0.125) rdst)
  34.     ) ; end setq
  35.     (foreach dat plist
  36.         (entmake     (list
  37.                     (cons 0     "LINE")
  38.                     (cons 8     (getvar "CLAYER"))
  39.                     (cons 10     (car dat))
  40.                     (cons 11     (cadr dat))))
  41.     ) ; end foreach
  42.     (setq ss (ssadd))
  43.     (foreach dat xdata
  44.         (setq
  45.             ref_p1    (nth 0 dat)
  46.             ref_p2    (nth 1 dat)
  47.             ang1    (nth 2 dat)
  48.             ang2    (nth 3 dat)
  49.             tmp        (polar ref_p1 ang1 rdst)
  50.             cen        (polar tmp ang2 rad)
  51.             rad2    (distance cen ref_p1)
  52.             ang1    (angle cen ref_p1)
  53.             ang2     (angle cen ref_p2)
  54.         ) ; end setq
  55.         (if (null (nth 4 dat)) (setq tmp ang1 ang1 ang2 ang2 tmp tmp nil))
  56.         (entmake
  57.             (list
  58.                 (cons 0        "ARC")
  59.                 (cons 8     (getvar "CLAYER"))
  60.                 (cons 10     cen)
  61.                 (cons 40     rad2)
  62.                 (cons 50     ang1)
  63.                 (cons 51     ang2)))
  64.       (setq ss (ssadd (entlast) ss))
  65.     ) ; end foreach
  66.   (setq dis (distance p1 p2))
  67.   (command "line" (polar p1 (angle p2 p1) (* dis 0.15)) (polar p2 (angle p1 p2) (* dis 0.15)) "")
  68.   (command "chprop" (entlast) "" "lt" "center" "s" 20 "")
  69.   (command "mirror" ss "" p1 p2 "Y")
  70.     (princ)
  71. )
 楼主| 发表于 2008-7-5 11:24:00 | 显示全部楼层
本帖最后由 作者 于 2008-7-5 11:45:17 编辑

谢谢,最后MIRROR稍微更改了一下,完全正确,谢谢

原程序问题:

为什么将logocad:pipe_size 100,改为logocad:pipe_size 219,得到的距离是218呢

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

本版积分规则

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

GMT+8, 2025-9-21 04:17 , Processed in 0.177361 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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