找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: hqd9639

[LISP程序]:一个实用的LISP程序

[复制链接]
 楼主| 发表于 2003-1-30 14:05:10 | 显示全部楼层
最初由 独孤雪 发布
[B]感觉hqd9639 的程序好用一些
但有几点想法:
好象没有不加工表面的标注 [/B]



  感谢你的鼓励。非加工面粗糙度标注程序如下:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-2-22 22:32:38 | 显示全部楼层
我觉得此程序功能有限,粗糙度的形式又很多种,应该更完美。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-23 20:25:29 | 显示全部楼层
好东西,谢谢了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-3-31 15:09:39 | 显示全部楼层
这是我从网上看到一位叫“北极熊”的文章,拜读之后有些说不出的滋味,故收藏之。今在本论坛偶见本话题,特转附此文。望能引出回音!
  “我对CAD二次开发的看法 ”
  我从参加工作以来就没有离开过AutoCAD,到现在七年了。其间,从AutoCAD的简单操作,到使用别人开发的程序绘图软件包,到自己开发一些小的绘图工具,回顾起来便作了这样一个总结,由于全是一家之言,不当之出请您多多指教。
首先,AutoCAD自身的功能就很强大,对于一般的平面制图(比如建筑、结构方面),不使用任何第三方的软件,仅凭AutoCAD自带的基本命令,就可以完成。但如果这样的话,CAD制图就是一件很枯燥乏味、效率低下的事情,比手工制图强不到哪里去。AutoCAD的高明之处就在于他提供的是一个最基本的图形操作平台,采取开放的体系结构让用户和开发方对其进行扩充和修改。这种扩充和修改就是二次开发,直接面向的是用户,使得制图更亲切,更“人性化”,比如绘制一段墙体就不再是通过绘制两条平行线来解决。
当时,我使用AUTOCAD R12 DOS版,使用的中科院PKPM系列也是DOS版,发现中科院PKPM系列的MODIFY.EXE二维编辑中的许多功能特别方便实用,使我惊奇的是:这些命令在AUTOCAD中都能找到其原型,既然AUTOCAD是开放的结构,就萌发了把这些命令移到AUTOCAD中实现的念头。记得编写的第一个程序是把PKPM式的"适时PAN"命令移到AUTOCAD中去,天哪!它动用了我各方面的知识!!DOS ,LISP,这一技术我曾以"给AUTOCAD增加一个PKPM式的PAN命令"为题发表于《PKPM新天地》上,然后就收到全国各地的同仁们的电话,因为这一命令是真正的"PKPM式的适时平移"命令,直到现在各CAD网站上还没有第二种能实现这一功能的程序。如果你有兴趣,可从本站点下载。从此我一发而不可止,主要采用LISP DCL PDB开发,由于AutoLISP是AutoCAD固有的一部分,故开发起来很方便,只要有一个文本编辑器即可。这种语言跟我以前学习的Fortran、C相比,很怪异,但并不难,关键是将几个重要概念比如表,实体名,选择集等搞清楚。
开发CAD就少不了对话框的设计,这有两种途径。一种是采用可编程对话框(Program Dialog Box,简称PDB)技术,需要编写单独的DCL文本文件(后缀为.dcl),市面上的软件大都使用这个技术,比如探索者,但我个人觉得在R14中,这种对话框显示的效果很差,汉字几乎变形,很难看。另一种对话框是Windows对话框,这就需要用到ObjectARX及MFC,当然界面就丰富好看得多了,但需要编写者对VC++有所了解。
随着电脑的普及,CAD技术的推广,CAD市场已接近饱和。本来就不算大的市场又被几家大的软件公司所垄断,建筑方面有德赛、天正、圆方、中望等,结构方面有PKPM,TBSACAD,TAsd,及探索者等,其他的就不用赘述了。这些专业软件的功能越来越完善,个人开发的CAD就越来越没有价值,这正是我开始远离CAD二次开发的原因所在。为此我忠告那些如我一样的业余开发者,这种开发的投入产出是很低的。
最后,我想谈谈源程序的开放问题。由于本能的保守心理作怪,很多人(包括我)都将源程序当作宝贝,不肯轻易示人。其实这种个人制作的CAD软件又有多少商业价值可言,根本没有必要遮遮掩掩,公开出来,对于那些急需源代码提高自己水平的人不庛为一个福音,而且更多的人也会投入到这个程序的完善中去,对谁都有好处。您就别指望靠这种程序赚外快了,您所有的努力都是无私奉献,收获的就是达到预期目标后的快感和使用者的鼓励了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-1 14:45:45 | 显示全部楼层
程序确实可以,但仍有欠缺,本人特提出以下建议,其思路为:粗糙度的高度可随字体高度而变,当字高为8时,粗糙度的高度就是8,当字体高为5时,其粗糙度的高度就是5。就象标注形位公差一样无须设置高度,以上建议供原作者参考。如有不妥请将此帖撤下。附修改程序如下:
                  (DEFUN MYERROR (S)
                  (IF (/= S "FUNCTION CANCELLED")
                  (PRINC (STRACT "\NERROR:" S))
                  )

                  (SETVAR "OSMODE" OSD)
                  (SETVAR "CMDECHO" CMD)
                  (SETVAR "BLIPMODE" BLIP)
                  (SETVAR "TEXTSTYLE" TXTSTY)

                  (SETQ *ERROR* OLDERR)
                  (PRINC)
                  )

                  ;;;*************CONVERT ANGLE IN DEGREES TO
                  RADIANS*****************

                  (DEFUN DTR(A)
                  (* PI (/ A 180.0))
                  )

                  ;;;*****************************标注加工面粗糙度**************************

                  (DEFUN C:ROU(/ BLIP CMD OSD TXTSTY IP CU TDATA RANGE1 IRA PT1
                  PT2 PT3 PT4 PT6
                  SS1 ST1 IRT IRT1 MT MT1)

                  (SETQ OLDERR *ERROR*
                  *ERROR* MYERROR)

                  (SETQ BLIP (GETVAR "BLIPMODE"))
                  (SETQ CMD (GETVAR "CMDECHO"))
                  (SETQ OSD (GETVAR "OSMODE"))
                  (SETQ TXTSTY (GETVAR "TEXTSTYLE"))

                  (SETVAR "CMDECHO" 0)
                  (SETVAR "BLIPMODE" 0)
                  (SETVAR "OSMODE" 512)
                  (SETQ k (getvar "dimtxt"))
                  (COMMAND "STYLE" "FOR_ROU" "TXT.SHX" k "" "" "" "" "")
                  (INITGET 1)
                  (SETQ IP (GETPOINT "\n选择标注点: "))
                  (while (/= IP nil)
                  (COMMAND "CIRCLE" IP 0.0001)
                  (SETQ CU (OSNAP IP "INTERS"))
                  (ENTDEL (ENTLAST))
                  (SETQ TDATA NIL)
                  (IF CU
                  (PROGN (SETQ RANGLE1 (ANGLE IP CU))
                  (SETQ IRA (+ RANGLE1 (DTR 90)))
                  )
                  (SETQ IRA (DTR 90.0)
                  TDATA T
                  )
                  )
                  (SETQ PT1 (POLAR IP (- IRA (DTR 30)) (* 3.0 k)))
                  (SETQ PT2 (POLAR IP (- IRA (DTR 30)) (* 1.5 k)))
                  (SETQ PT3 (POLAR IP (+ IRA (DTR 30)) (* 1.5 k)))
                  (SETQ PT4 (POLAR IP IRA (* 2.1 k)))
                  (SETQ PT6 (POLAR IP (- IRA (DTR 90.0)) 10.0))
                  (SETVAR "OSMODE" 0)
                   (COMMAND "PLINE" PT2 "w" 0"" pt3 IP pt1 "")
                  (SETQ SS1 (SSADD))
                  (SETQ SS1 (SSADD (ENTLAST) SS1))
                  (SETQ ST1 (getstring "\n请输入粗糙度值<1.6>: "))
                  (IF (= 0 (strlen ST1))(setq ST1 "1.6"))
                  (SETQ IRA (cond ((< IRA 0.0) (+ IRA (DTR 360)))
                                  ((> IRA (DTR 360)) (- IRA (DTR 360)))
                                  ((AND (>= IRA (DTR 180.5)) (< IRA (DTR 360.5))) (- IRA (DTR 180)))
                                  (t IRA)
                                 ))
                  (SETQ IRT (- IRA (DTR 90)))
                  (SETQ IRT1 (/ (* IRT 180) PI))
                  (COMMAND"_TEXT" "M" PT4 IRT1 ST1)
                  (SSADD (ENTLAST) SS1)
                  (IF (= TDATA T) ;;;当标注点在空白处时
                  (PROGN (SETQ SCT (GETSTRING "\n要缩放吗[Y/N ]? "))   
                  (IF (OR (= SCT "Y") (= SCT "y"))
                  (PROGN (INITGET 7)
                  (SETQ SCP (GETREAL "\n请输入缩放倍数: "))
                  (COMMAND "SCALE" SS1 "" IP SCP)
                  )
                  )
                  )
                   (PROGN (SETQ MT (GETSTRING "\n要翻转吗Y/N<n> : ")) ;;;当标注点在实体处时
                  (SETQ MT1 (GETVAR "MIRRTEXT"))
                  (SETVAR "MIRRTEXT" 0)
                  (IF (OR (= MT "Y") (= MT "y"))
                  (PROGN (COMMAND "MIRROR" SS1 "" IP PT4 "Y")
                  (COMMAND "MIRROR" (SSGET "P") "" IP PT6 "Y")
                  )
                  )
                  (SETVAR "MIRRTEXT" MT1)
                  )
                  )  
                  (SETVAR "OSMODE" 512)
                  (SETQ IP (GETPOINT "\n选择标注点<回车退出>: "))
                  )
                  (SETVAR "OSMODE" OSD)
                  (SETVAR "CMDECHO" CMD)
                  (SETVAR "BLIPMODE" BLIP)
                  (SETVAR "TEXTSTYLE" TXTSTY)
                  (SETQ *ERROR* OLDERR)
                  (PRINC)
                  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-2 23:47:59 | 显示全部楼层
我也想用用
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-13 10:35:28 | 显示全部楼层

真是大师级别

最初由 lijiao 发布
[B]不要急噪,可能是你的设置有问题。 [/B]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-13 14:41:33 | 显示全部楼层
最初由 菜鸟当家 发布
[B][QUOTE]最初由 陈伯雄 发布
[B]我有些纳闷:
AutoCAD Mechanical从R14版本就已经有了完整的工程图各种符号添加功能,至今一直随着版本在更新,大家为什么还在研究自己写的程序?难道会比AutoCADM中的功能更... [/B]



在红高粱地,她奶奶!
给邮箱,传给你!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-16 03:50:12 | 显示全部楼层
下一个来用用先
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-4-20 09:28:50 | 显示全部楼层
其实画二维机械图用InterCAD或TH-MCAD软件就可以了!
附图
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-19 06:43 , Processed in 0.176864 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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