明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1170|回复: 5

[求助]尺寸标柱???

[复制链接]
发表于 2008-4-14 03:39 | 显示全部楼层 |阅读模式

天正3.0里面有个两点标注命令,主要用于对任何一组平行线进行快速标注,只需要点平行线外两册就能快速按点取位置(按设定比例)将尺寸标注好!我将其程序进行了反编译!但是在2002-2006上都不能使用,请问各位大侠!这个命令怎么样才能在2002-2006使用呢??付上反编译lisp程序:

(_@ld"clqlib")(defun dimtp1(/ dmtp11 dmtp12 dmtp13 dmtp14 p5)(defun dmtp11(tf q1 q2 / q3 ll2 ll)(setq ll2(if tfmd lw1 l1))(while(and(setq ll(car ll2))(setq q3(inters q1 q2(cadar ll)(caddar ll)nil))(<(distance q1 q3)mx))(setq ll2(cdr ll2)))(setq ll2(list e q1 q2 tf))(if tfmd(setq lw1(if ll(subst(cons ll2 ll)ll lw1)(cons(list ll2)lw1)))(setq l1(if ll(subst(cons ll2 ll)ll l1)(cons(list ll2)l1)))))(defun dmtp12(/ e na la q1 q2 q3 q4 r x y l ll lp tf tfmd)(transws ss 0)(while(setq e(slb_slb 0))(setq na(gcolor 0)la(gcolor 8)q1(gcolor 10)tfmd(and mdla(wcmatch la mdla)))(cond((="LINE"na)(setq q2(gcolor 11))(dmtp11 T q1 q2))((wcmatch na"ARC,CIRCLE")(dmtp13(gcolor 40)(if tfmd lw4 l4)))((="INSERT"na)(if(setq w(savlyr"wthick"))(progn(setq x(gcolor 41)y(gcolor 42)a2(gcolor 50)w(car w)w(/ w 2))(if(setq lp(savlyr"wpline"))(if(and(= 3(length lp))(<(abs x)100))(progn(mapcar'set'(tf q1 r)(apply'zoome(sndtout q1 a2 x y lp)))(dmtp13(- r w)(if tfmd lw4 l4))(dmtp13(+ r w)(if tfmd lw4 l4))))(progn(setq tf(equal w(abs y)mm)a1(+ a2 _pi2)q3(polar q1 a1(- w))q1(polar q1 a1 w)q4(polar q3 a2 mx)q2(polar q1 a2 mx))(dmtp11 tf q1 q2)(dmtp11 tf q3 q4))))))))(if l1(progn(setq n 0)(foreach ll l1(if(>(setq n1(length ll))n)(setq n n1 l2 ll)))(setq ay(angle(cadar l2)(caddar l2))l1 nil)))(if lw1(progn(setq n 0)(foreach ll lw1(if(>(setq n1(length ll))n)(setq n n1 lw2 ll)))(setq ay(angle(cadar lw2)(caddar lw2))lw1 nil)))(if(or l2 lw2)(mapcar'set'(l2 lw2)(dmtp14 l2 lw2)))(setq tf nil)(cond(l2(foreach ll l2(setq e(car ll)le(cons e le))(redraw e 4)(if(last ll)(setq l1(cons(caddr ll)l1))(setq l3(cons(caddr ll)l3))))(setq l2 l1 tf T))(l4(setq n 0)(foreach ll l4(if(>(setq n1(length ll))n)(setq n n1 l1 ll)))(setq q1(car l1)l1(cdr l1))))(cond(lw2(foreach ll lw2(setq e(car ll)le(cons e le)la(cdr(assoc 8(entget e))))(redraw e 4)(if(last ll)(setq lw1(cons(cons(caddr ll)la)lw1))(setq lw3(cons(cons(caddr ll)la)lw3))))(setq lw2 lw1 tf T))(lw4(setq n 0)(foreach ll lw4(if(>(setq n1(length ll))n)(setq n n1 lw1 ll)))(setq q1(car lw1)lw1(cdr lw1))))(if(and(not tf)(or l4 lw4))(progn(mapcar'set'(l1 lw1)(dmtp14 l1 lw1))(setq p1(p_l p1 p2)a1(angle q1 p1)ay(+ a1 _pi2))(if l1(progn(setq l2 nil tf T)(foreach ll l1(setq e(car ll)le(cons e le))(redraw e 4)(setq l2(cons(polar q1 a1(cdr ll))l2)))))(if lw1(progn(setq lw2 nil tf T)(foreach ll lw1(setq e(car ll)le(cons e le))(redraw e 4)(setq lw2(cons(cons(polar q1 a1(cdr ll))(cdr(assoc 8(entget e))))lw2)))))))tf)(defun dmtp13(r ll / l)(while(and(setq l(car ll))(not(equal q1(car l)mm)))(setq ll(cdr ll)))(if tfmd(setq lw4(if l(subst(append l(list(cons e r)))l lw4)(cons(list q1(cons e r))lw4)))(setq l4(if l(subst(append l(list(cons e r)))l l4)(cons(list q1(cons e r))l4)))))(defun dmtp14(lx1 lx2 / lx ll1 ll2 p1 p2 ss)(setq lx(append lx1 lx2))(foreach l lx(redraw(car l)3))(while(progn(initget"C")(setq e(interst"\n请点取不需要标注的轴线、墙线或门窗/ C-窗选/ <结束点取>: ")))(if(="C"e)(if(and(setq p1(getpoint"\n请点取窗选第一点 <退出>: "))(setq p2(getcorner p1"\n第二点 <退出>: "))(setq ss(ssget"C"p1 p2)))(progn(transws ss 2)(while(setq e(slb_slb 2))(setq lx(apply'end(cons e lx)))(redraw e 4))))(progn(setq e(car e)lx(apply'end(cons e lx)))(redraw e 4))))(foreach l lx(if(member l lx1)(setq ll1(cons l ll1))(setq ll2(cons l ll2))))(list ll1 ll2))(setq mm 0.1 mma 0.02 mx 1e7 pi32(+ pi _pi2))(pouts"公共标注")(and(setq p1(getpoint"\n请输入尺寸线位置的起始点 <退出>: "))(setq p2(getpoint p1"\n结束点 <退出>: "))(>(distance p1 p2)mm)(or(and(setq ss(ssget"F"(ltoecs(list p1 p2))))(dmtp12))(and(setq q1(entsel"\n请点取一条方向线(平行或垂直于尺寸线) <退出>: "))(setq q2(last q1)p3(osnap q2"mid")p4(osnap q2"end"))(setq p5(polar p3(+(angle p3 p4)_pi2)mx)p4(if(>(abs(-(sort p1 p3 p4)(sort p2 p3 p4)))(abs(-(sort p1 p3 p5)(sort p2 p3 p5))))p4 p5)p5(inters p1 p2 p3(list(car p4)(cadr p4))nil))(setq ay(angle p5 p3))))))(defun dimtp2(x y)(setq q1(polar q1 ay x)q2(polar q1 ax y)q1(polar q1 ax(- y))))(defun dimtp3(p / d)(if tfmd(setq lw1(cons(cons p la)lw1))(setq l1(cons p l1)))(if(<(abs(setq d(sort p p1 p2)))(abs dn))(setq dn d)Y

麻烦了!先谢谢各位大侠!!!!

本帖子中包含更多资源

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

x
发表于 2008-4-14 09:48 | 显示全部楼层

我有一个批量标注尺寸的小程序,但我用的不多,垂直用ADV,水平用ADH,你试试看能不能用。

本帖子中包含更多资源

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

x
 楼主| 发表于 2008-4-14 10:20 | 显示全部楼层
to:职业侠客!不能用啊!在2002和2006上都不能用啊!有没有其他更好的的小程序啊!谢谢了
发表于 2008-4-14 15:16 | 显示全部楼层

那就不知道了,程序提示有什么错误?我是在2004跟2007下试的,都还是可以运行的。

你如果想要大家帮你,就把你的要求写出来,相信很多人会帮你的,现在你贴的是一个不能运行的程序,几乎很少有人愿意看别人的程序的。

 楼主| 发表于 2008-4-14 19:37 | 显示全部楼层
职业侠客!看看是怎么回事啊!其实我的要求很简单主要就是看能否以最简单的方式把一组平行线以最快的方式给标注出来!只需要在平行线的两端点取一下,程序就能自动把平行线间的尺寸标注好!!谢谢!!
发表于 2008-4-15 11:08 | 显示全部楼层
一楼程序不完整。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-13 23:55 , Processed in 0.164034 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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