明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: raimo

[函数] [已解决]请高手帮忙做个简单的等分工具

  [复制链接]
发表于 2011-6-21 15:01 | 显示全部楼层

  1. (defun c:adf (/            sel          el        e     n            ju          pt0        r     angs
  2.               ange  pts          pte        ang   larc  larc_s        larc_ju
  3.               po_en m
  4.              )
  5.   (setvar "CMDECHO" 0)
  6.   (setq sel (car (entsel "\n请选择圆弧:<Exit> ")))
  7.   (if (/= sel nil)
  8.     (progn
  9.       (setq el (entget sel))
  10.       (setq e (assoc 0 el))
  11.       (if (= "ARC" (cdr e))
  12.         (progn
  13.           (setq n (getint "\n等分数:"))
  14.           (setq ju (getreal "\n等分间距:"))
  15.           (setq pt0 (cdr (assoc 10 el)))
  16.           (setq r (cdr (assoc 40 el)))
  17.           (setq angs (cdr (assoc 50 el)))
  18.           (setq ange (cdr (assoc 51 el)))
  19.           (setq        pts (polar pt0 angs r)
  20.                 pte (polar pt0 ange r)
  21.           )
  22.           (setq ang (- ange angs))
  23.           (if (< ang 0)
  24.             (setq ang (- (* 2 pi) (abs ang)))
  25.           )
  26.           (setq larc (* r ang))
  27.           (setq larc_s (/ (- larc (* ju (- n 1))) n))
  28.           (setq ang_s (* (/ (/ larc_s r) pi) 180.00))
  29.           (setq ang_ju (* (/ (/ ju r) pi) 180.00))       
  30.           (command "point" pts)
  31.           (command "ROTATE" "L" "" pt0 ang_s)
  32.           (command "copy" "l" "" "@" "@")
  33.           (setq m 0)
  34.           (setq n1 (- n 2))
  35.           (while (/= n1 m)
  36.             (command "rotate" "l" "" pt0 (+ ang_s ang_ju))
  37.             (command "copy" "l" "" "@" "@")
  38.             (setq n1 (- n1 1))
  39.           )
  40.           (command "point" pts)
  41.           (command "ROTATE" "L" "" pt0 (+ ang_s ang_ju))
  42.           (command "copy" "l" "" "@" "@")
  43.           (setq m 0)
  44.           (setq n1 (- n 2))
  45.           (while (/= n1 m)
  46.             (command "rotate" "l" "" pt0 (+ ang_s ang_ju))
  47.             (command "copy" "l" "" "@" "@")
  48.             (setq n1 (- n1 1))
  49.           )
  50.         )
  51.       )
  52.     )
  53.   )
  54. )

评分

参与人数 1金钱 +20 收起 理由
429014673 + 20

查看全部评分

发表于 2011-6-21 17:47 | 显示全部楼层
回复 userzhl 的帖子

是个好工具,发上源码分享一下!~~
发表于 2011-6-21 18:14 | 显示全部楼层
学习了,呵呵,不过高手都是发图片,木有程序啊
 楼主| 发表于 2011-6-21 22:53 | 显示全部楼层
死神去了 发表于 2011-6-21 18:14
学习了,呵呵,不过高手都是发图片,木有程序啊

呵呵,院长是这样的.图片演示专业勾人
发表于 2011-6-21 23:04 | 显示全部楼层
下一版工具箱会添加此功能
发表于 2011-6-22 10:26 | 显示全部楼层
CAD不是有命令“divide” 吗?
等分有那么麻烦吗?

当然,做个小程序出来当然更方便了
发表于 2011-6-22 19:40 | 显示全部楼层
zhynt 发表于 2011-6-21 15:01

       不知zhynt 可有时间在我改下程序,当时我以为用“点”来作为每个分格可用批量打断命令可以打断的,今日一试,打断不了,最好可以改为在圆心那一侧有一条直线(长度:0.1倍半径值,直线在03分格层)垂直于该圆弧,那些点就不要了,麻烦下了。
       在工作中还经常遇到这个的情况,别人测量了很多弧长,回来要把每一个数值1:1画在图纸上,如果没有程序这样的工作量可想而知,测量的每一段弧长不一样,但小格弧长还是15(默认为15,当然还有其它的长度),可不可以写一个只要输入每一个大格的尺寸(小格还是比大格少一格),弧长的分格开始端是该弧长端点的靠近端(即是是可以点选是从哪个端点开始分格),都是希望可以有那些垂直的分格直线(直线在03分格层)。
        多谢你前面帮忙写的那个程序,祝你工作顺利。分值不多,小小心意。
 楼主| 发表于 2011-6-22 21:23 | 显示全部楼层
回复 my_mjtd 的帖子

老兄,等分的方式不同...divided只是点..
发表于 2011-6-22 21:54 | 显示全部楼层
我想知道是干什么用的,别人测量的弧长是用什么方式和格式记录的。光知道弧长可画不出圆弧,还要知道半径或弧度。
发表于 2011-6-23 00:33 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-8 09:47 , Processed in 0.672067 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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