明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2165|回复: 8

[求助]圆中心线斜45度

[复制链接]
发表于 2005-8-5 19:18:00 | 显示全部楼层 |阅读模式
哪位高手有自动画圆中心线而且是斜45度的LSIP>
发表于 2005-8-5 19:56:00 | 显示全部楼层
(defun c:test ()
  (setq en (car (entsel "\nSelect a circle: ")))
  (if en
    (progn
      (setq obj (vlax-ename->vla-object en))
      (if (= (vlax-get-property obj 'ObjectName) "AcDbCircle")
 (progn
   (setq rad (vlax-get-property obj 'Radius))
   (setq cen (vlax-safearray->list (vlax-variant-value (vlax-get-property obj 'Center))))
   (setq spt (polar cen (* (/ 225.0 180.0) pi) rad)
  ept (polar cen (* (/ 45.0 180.0) pi) rad)
  )
   (setq line (vla-addline
         (vla-get-modelspace
    (vla-get-activedocument
      (vlax-get-acad-object)
      ))
         (vlax-3d-point spt)
         (vlax-3d-point ept)
         ))
   )
 );if
      )
    );if
  );

本帖子中包含更多资源

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

x
 楼主| 发表于 2005-8-6 18:59:00 | 显示全部楼层

谢谢,怎么只能画出一条线呢>?

能一次性画出交差的两条性吗?

发表于 2005-8-6 19:55:00 | 显示全部楼层
  1. (load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://bbs.mjtd.com/forum.php?mod=viewthread&tid=37554[/url]|;
  13. (defun c:xx45 ()
  14.   (CMDLA0)
  15.   (mkla"中心线"1)
  16.   (while (setq s1 (car (entsel "\n选择圆 : ")))
  17.     (setq mode (dxf 0 (entget s1)))
  18.     (if (= mode "CIRCLE")
  19.       (progn
  20. (setq pt  (dxf 10 (entget s1))
  21.        rad (* (dxf 40 (entget s1)) 0.5)
  22.        ss1(ssget "x")
  23. )
  24. (XYP_SZX pt rad)
  25. (setq ss2(ssget "x")
  26.        ss(SSDIFF ss2 ss1)
  27.        )
  28. (command"rotate"ss "" pt 45)
  29.       )
  30.     )
  31.   )
  32.   (CMDLA1)
  33. )
  34. (princ"xx45(斜线45)")
  35. (princ)
发表于 2005-8-6 20:08:00 | 显示全部楼层

reply

另一条你自己改吧.
发表于 2005-8-7 08:51:00 | 显示全部楼层
  1. (defun c:tt (/ ss mkline j e el r sp1 ep1 sp ep)
  2.   (defun mkline    (p1 p2)
  3.     (entmake (list '(0 . "line")
  4.            '(100 . "acdbentity")
  5.            '(100 . "acdbline")
  6.            (cons 10 p1)
  7.            (cons 11 p2)
  8.          )
  9.     )
  10.   )
  11.   (if (setq j  -1
  12.         ss (ssget '((0 . "circle")))
  13.       )
  14.     (repeat (sslength ss)
  15.       (setq e    (ssname ss (setq j (1+ j)))
  16.         el    (entget e)
  17.         r    (cdr (assoc 40 el))
  18.         cen    (cdr (assoc 10 el))
  19.         sp    (polar cen (/ pi 4.) r)
  20.         ep    (polar cen (* -0.75 pi) r)
  21.         sp1    (polar cen (* 0.75 pi) r)
  22.         ep1    (polar cen (* -0.25 pi) r)
  23.       )
  24.       (mkline sp ep)
  25.       (mkline sp1 ep1)
  26.     )
  27.   )
  28.   (princ)
  29. )
发表于 2005-8-7 12:19:00 | 显示全部楼层
  1. (defun c:tt (/ ss odc i e)
  2.   (command ".undo" "be")
  3.   (if (setq ss (ssget '((0 . "CIRCLE"))))
  4.     (progn
  5.       (setq odc(getvar "dimcen"))
  6.       (command ".ucs" "z" 45)
  7.       (setq i -1)
  8.       (while (setq e (ssname ss(setq i (1+ i))))
  9.    (setvar "dimcen" (cdr(assoc 40 (entget e))))
  10.    (command ".dimcenter" (list e (vlax-curve-getstartpoint e)))
  11.       )
  12.       (command ".ucs" "p")
  13.       (setvar "dimcen" odc)
  14.     )
  15.   )
  16.   (command ".undo" "e")
  17.   (princ)
  18. )
发表于 2005-8-7 15:31:00 | 显示全部楼层

先设UCS,如果是我用的话。

发表于 2005-8-7 19:08:00 | 显示全部楼层
不知楼主是何用途,要是我在这样有规律的情况下会用下面的程序
  1. (defun c:tt (/ addblk eDoc MS cset)
  2.   (defun addblk    (/ blkdef oldlyr oldcol)
  3.     (if    (not (tblsearch "block" "$ea_center_mark"))
  4.       (progn
  5.     (setq oldlyr (getvar "Clayer")
  6.           oldcol (getvar "cecolor")
  7.     )
  8.     (setvar "clayer" "0")
  9.     (setvar "cecolor" "bylayer")
  10.     (setq blkdef
  11.            (vla-add    (vla-get-blocks
  12.               (vla-get-activedocument (vlax-get-acad-object))
  13.             )
  14.             (vlax-3d-point '(0. 0. 0.))
  15.             "$ea_center_mark"
  16.            )
  17.     )
  18.     (vla-addcircle blkdef (vlax-3d-point '(0. 0. 0.)) 1.)
  19.     (vla-addline
  20.       blkdef
  21.       (vlax-3d-point (polar '(0. 0. 0.) (* 0.25 pi) 1.))
  22.       (vlax-3d-point (polar '(0. 0. 0.) (* -0.75 pi) 1.))
  23.     )
  24.     (vla-addline
  25.       blkdef
  26.       (vlax-3d-point (polar '(0. 0. 0.) (* 0.75 pi) 1.))
  27.       (vlax-3d-point (polar '(0. 0. 0.) (* -0.25 pi) 1.))
  28.     )
  29.     (setvar "clayer" oldlyr)
  30.     (setvar "cecolor" oldcol)
  31.       )
  32.     )
  33.   )
  34.   (if (not (vl-catch-all-error-p
  35.          (setq cset
  36.             (vl-catch-all-apply
  37.               'vla-item
  38.               (list
  39.             (vla-get-selectionsets
  40.               (setq
  41.                 eDoc (vla-get-activedocument (vlax-get-acad-object))
  42.               )
  43.             )
  44.             "CURRENT"
  45.               )
  46.             )
  47.          )
  48.        )
  49.       )
  50.     (vla-delete cset)
  51.   )
  52.   (if (ssget '((0 . "circle")))
  53.     (progn
  54.       (addblk)
  55.       (vlax-map-collection
  56.     (vla-get-activeselectionset eDoc)
  57.     '(lambda (x / r blkref)
  58.        (setq blkref    (vla-insertblock
  59.               (if MS
  60.                 MS
  61.                 (setq MS (vla-get-modelspace eDoc))
  62.               )
  63.               (vla-get-center x)
  64.               "$ea_center_mark"
  65.               (setq r (vla-get-radius x))
  66.               r
  67.               r
  68.               0.
  69.             )
  70.        )
  71.        (vla-put-layer blkref (vla-get-layer x))
  72.        (vla-delete x)
  73.      )
  74.       )
  75.     )
  76.   )
  77.   (princ)
  78. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-17 21:47 , Processed in 0.168939 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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