- UID
- 1
- 积分
- 16111
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-1-3
- 最后登录
- 1970-1-1
|
发表于 2002-3-18 13:47:40
|
显示全部楼层
Re: [编程申请]:又有新问题,关于尺寸标注
最初由 mrbean13 发布
[B]我在acad.mnl中写了如下简单的lisp,这样就可以在tch3.0中简单的用dh调用当前图形比例的dimnXX变量进行标注。但是当我把图形unit设为非整数,例如0.00,就会提示我无法创建dimnXX.00。我必须先将unit改为整数才可。?.. [/B]
天正的设置比例是这样用的:
你不用考虑自己设置尺寸样式啊,天正都替你考虑好的,
不管什么时候,你都只用几个1:100下的名字,如:dimn,dimb,dima,axis
你使用(sldna "dimn")就可以了,这个函数会根据normal的dimscale自动设置样式的,比如如果当前图比例是:1:50,那么normal样式的dimscale=0.5,所以,你求当前比例,不用NORMAL就可以,直接(setq scale(sldna "dimn")), 就知道函数的返回值是0.5,运行完函数系统保持在dim状态下,以后在标注,不用另外加(command "dim")
执行(sldna "dimn")后的结果是:
1.若当前图没有dimn50这个样式,自动创建它及AXIS50,DIMA50,DIMB50.
2.设置当前尺寸样式为:dimn50,并且返回0.5给LISP
3.除了(sldna "normal")返回到command:下外,其他的如:(sldna "dimn")保持在尺寸标注下状态,dim:,也就是说,以后的LISP程序直接要调用标注的命令,不要另外加(command "dim"..)等等。
上面是分析,你可以去试试。
设置好图形比例后,你执行(sldna "dimn")看看结果 :)
btw: 别用天正的函数名字了,每个版本的名字都不一样的 :),XDRX_API的函数:xdrx_srchdim 和天正3.0的sldna是一样的
下面是用法,看了,也会明白上面我的分析了。
- 64. xdrx_srchdim
- 功能:搜索 "标注类型名", "标注类型名"为"normal,axis,axist,angl,dimn,dima,dimb,dimt,dimu,dimv"之一。
- 使用其他,函数返回NIL。 如没有找到则做当前图初始化。保存当前文字类型到内部ARX变量,将当前文字类型
- 设置为DIM_FONT,若系统没有DIM_FONT文字STYLE,则用西文字体ROAMNS.SHX设置DIM_FONT.
- 说明:"标注类型":
- 1."noraml: 正常设置,此标注类型的DIMSCALE变量存储当前图纸出图比例,根据此比例值,生成其他
- 的几个标注类型。
- 2."axis":此类型用于轴线标注,主要特征是:两侧没有"尺寸界线",尺寸线两头用自定义的粗线块。
- 3."axit":基本同"AXIS",不同是,尺寸线两头不用粗线块,而是细线。
- 4."angl": 用来标注角度。
- 5."dimn": 主要特征:两侧有"尺寸界线",尺寸线两头粗线块。
- 6."dimt": 两侧有"尺寸界线", 尺寸线两头细线。
- 7."dima": 左(下)有“尺寸界线”,右(上)没有。尺寸线两头粗线块。
- 8."dimu": 左(下)有“尺寸界线”,右(上)没有。尺寸线两头细线。
- 9."dimb": 右(上)有“尺寸界线”,左(下)没有。尺寸线两头粗线块。
- 10."dimv": 右(上)有“尺寸界线”,左(下)没有。尺寸线两头细线。
- 概念:
-
- 出图比例:出图比例主要影响“尺寸标注”,“文字标注”等图元。他们不应该随着比例而改变。
-
- 我们绘图一般常用比例1:100, 这时,使用的主要标注类型是上面除NORMAL列出的。
- 他们除了尺寸界线等外,其余变量基本相同,如:字高300,文字字型DIM_FONT,
- 文字距离尺寸线150。。。。
-
- 现在,若我们要出1:50的大样图怎么办?在一张图纸里面,是不能有不同的比例的。
- 一个解决方法是:
- 绘图时候放大1倍,然后标注时候,把DIMSCALE变量缩小1倍。使标注出的值
- 符合源值。
- 另个方法是:所有的图纸都按1:100绘制。修改标注时候的尺寸变量。使得标注符合
- 实际比例的一半。在出图的时候,根据实际比例,做为块插入图中。
- 比如:图按1:100画,标注缩小一般,出图按1:50,做为块插入,放大系数2,
- 这样,标注也放大一倍。这样,标注的大小正好符合1:100时候的我们需要的正常大小。
-
- 上诉两种方法,明显第二种要好,因为这种方式,图纸可以根据比例灵活改变。只需在
- 出图前处理下尺寸标注就可以。第二种方法好处是不用考虑值,只需考虑字高等。
-
- 2。当标注类型是NORMAL时候,若系统没有NORAML标注类型,则自动初始化创建上面的10种类型。
- 这10种适合1:100情况下的各种需要的标注类型。
- 程序返回NORMAL标注类型的尺寸变量dimscale,返回到COMMAND:下。
-
- 3。当参数标注类型不是NORMAL的时候,有两种情况:
- 例如:(xdrx_srchdim "axis") 同2,没有自动创建1:100下的10种标注类型,并把NORAML的
- DIMSCALE设置为1。
- a.若找到AXIS,然后读出NORMAL的DIMSCALE,若为1。0,则:
- 把当前标注类型设置为AXIS,返回NORMAL的DIMSCALE,
- 不返回COMMAND:,而保持coimmand:dim 状态下。可以接着使用DIM的命令。
- b.若找到AXIS,若NORMAL的DIMSCALE不为0,比如0。5,表示出图比例为1:50
- 这时候,查找尺寸类型axis50是否存在,若不存在,创建axis50,把AXIS50类型的DIMSCALE设置
- 为0。5。
- 把当前标注类型设置为AXIS50,返回AXIS50的dimscale,0.5, 保持在command:dim状态下,
- 等待进一步的尺寸标注命令。
- 同时,也生成其他10种类型除NORMAL外的"***50"类型。
-
- 示例:设置当前出图比例为1:50
- 在COMMAND:下依次敲入:
- DIM
- RES
- NORAML
- DIMSCALE
- 0.5
- SAVE
- NORMAL
- Y
- E
- 返回到COMMAND状态。
- 这时,用函数(xdrx_srchdim "axis") 将保持在DIM状态下,当前标注类型为axis50,并且已经生成了10种标注类型的"axis50","dimn50","dima50".......
复制代码 |
|