明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1971|回复: 6

一个BOM。欢迎指点

[复制链接]
发表于 2003-8-23 12:43:00 | 显示全部楼层 |阅读模式
(defun c:bom(/ old_la old_os ra num ddr pt1 pt2 ang dist1 pp)
  (setvar "cmdecho" 0)
  (setq old_la (getvar "clayer"))
  (setq old_os (getvar "osmode"))
  (setq ra 5)
  (setq num (getint "\n输入序号<1>:"))
  (if (= num nil) (setq num 1))
  (setq ddr 1)
  (setq pt1 (getpoint "\n起始点:"))
    (while (/= pt1 nil)
      (setvar "osmode" 0)
      (setvar "clayer" "bom")
      (command  "donut" 0 ddr pt1 "")
      (setq pt2 (getpoint pt1 "\n另一点:"))
      (command "pline" pt1 pt2)
      (setq ang (angle pt1 pt2))
      (setq dist1 (distance pt1 pt2))
      (setq pp (polar pt1 ang (- dist1 ra)))
      (command "u" pp "")
      (command "circle" pt2 ra)
      (command "text" "m" pt2 ra 0 num)
      (setq num (1+ num))
      (setq pt1 (getpoint "\n起始点:"))
    )
  (setvar "osmode" old_os)
  (setvar "clayer" old_la)
  (princ)
  )


注意:本程序须得有BOM层。不然达不到理想效果。
另:如果有合理指点另有精彩程式送。E-MAIL:ZYS@ROSSMAX.COM.TW

评分

参与人数 1金钱 +2 贡献 +1 激情 +2 收起 理由
meflying + 2 + 1 + 2 【好评】好文章

查看全部评分

发表于 2003-8-23 15:25:00 | 显示全部楼层
(defun c:bom(/ old_la old_os ra num ddr pt1 pt2 ang dist1 pp)
  (setvar "cmdecho" 0)
  (setq old_la (getvar "clayer"))
  (setq old_os (getvar "osmode"))
  (setq ra 5)
  (setq num (getint "\n输入序号<1>:"))
  (if (= num nil) (setq num 1))
  (setq ddr 1)
  (setq pt1 (getpoint "\n起始点:"))
    (while (/= pt1 nil)
      (setvar "osmode" 0)
      (setvar "clayer" "bom")    ;;; CLAYER   当前层变量  只读
      (command  "donut" 0 ddr pt1 "")
      (setq pt2 (getpoint pt1 "\n另一点:"));;; 语法错误
      (command "pline" pt1 pt2)
      (setq ang (angle pt1 pt2))
      (setq dist1 (distance pt1 pt2))
      (setq pp (polar pt1 ang (- dist1 ra)))
      (command "u" pp "")
      (command "circle" pt2 ra)  ;;;画圆的方式选择
      (command "text" "m" pt2 ra 0 num)
      (setq num (1+ num))
      (setq pt1 (getpoint "\n起始点:"))
    )
  (setvar "osmode" old_os)
  (setvar "clayer" old_la)
  (princ)
  )


   能不能 讲的具体一点,程序是要完成什么的。 再检查好吗?
发表于 2003-8-23 15:49:00 | 显示全部楼层
(defun c:bom(/ old_la old_os ra num ddr pt1 pt2 ang dist1 pp)
  (setvar "cmdecho" 0)
  (setq old_la (getvar "clayer"))
  (setq old_os (getvar "osmode"))
  (setq ra 5)
  (setq num (getint "\n输入序号<1>:"))
  (if (= num nil) (setq num 1))
  (setq ddr 1)
  (setq pt1 (getpoint "\n起始点:"))
    (while (/= pt1 nil)
      (setvar "osmode" 0)
      (setvar "clayer" "bom")
      (command  "donut" 0 ddr pt1 "")
      (setq pt2 (getpoint pt1 "\n另一点:"))
      (command "pline" pt1 pt2)
      (setq ang (angle pt1 pt2))
      (setq dist1 (distance pt1 pt2))
      (setq pp (polar pt1 ang (- dist1 ra)))
      (command "u" pp "");;;怎么把画多义线的操作取消了
      (command "circle" pt2 ra)
      (command "text" "m" pt2 ra 0 num)
      (setq num (1+ num))
      (setq pt1 (getpoint "\n起始点:"))
    )
  (setvar "osmode" old_os)
  (setvar "clayer" old_la)
  (princ)
  )

   程序大概是画圆环在圆内标注输入的序号,依次加 1  。
   多义线应该是作为引线的的吧
发表于 2003-8-23 16:54:00 | 显示全部楼层
似乎你说的错误都不是错误吧
发表于 2003-8-23 18:19:00 | 显示全部楼层

请教

对呀,有的不是错误


    (SETQ  A (GETPOINT  B ))

    这个我怎么认为不对呢?
发表于 2003-8-23 18:23:00 | 显示全部楼层

请教

CLAUER  是一个只读的系统变量

   能够  (SETVAR   ”CLAYER“  ”BOM“) 吗?
发表于 2003-8-23 18:29:00 | 显示全部楼层

啊, 不对

原程序没有问题。我的不对。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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