找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 870|回复: 7

[编程申请]:又有新问题,关于尺寸标注

[复制链接]
发表于 2002-3-18 03:38:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
我在acad.mnl中写了如下简单的lisp,这样就可以在tch3.0中简单的用dh调用当前图形比例的dimnXX变量进行标注。但是当我把图形unit设为非整数,例如0.00,就会提示我无法创建dimnXX.00。我必须先将unit改为整数才可。感觉美中不足。怎么办?
附见下,水平差,见笑了。
  1. (defun c:dh(/ dimsc)
  2.   (if (= (sldna "normal") 1)
  3.      (setq dimsc "dimn")
  4.      (setq dimsc (strcat "dimn" (rtos (* 100 (sldna "normal")))))
  5.   )
  6.   (princ (strcat "当前标注比例为 1:" (rtos (* 100 (sldna "normal")))))
  7.   (command "layer" "m" "pub_dim" "" "dim1" "res" dimsc "dimlinear")   
  8.   (princ)
  9. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-3-18 04:29:12 | 显示全部楼层
要对这句进行取整(精度)处理 (rtos (* 100 (sldna "normal")))
不然(strcat "dimn" (rtos (* 100 (sldna "normal"))))  会得出如 “dimn30.00” 这样的字符串
改为 (rtos (* 100 (sldna "normal")) 2 0)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-3-18 13:04:06 | 显示全部楼层
改为 (rtos (* 100 (sldna "normal")) 2 0)只能解决我举的这个小数点后两位的例子
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 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是一样的

下面是用法,看了,也会明白上面我的分析了。



  1. 64. xdrx_srchdim

  2. 功能:搜索 "标注类型名", "标注类型名"为"normal,axis,axist,angl,dimn,dima,dimb,dimt,dimu,dimv"之一。
  3.       使用其他,函数返回NIL。 如没有找到则做当前图初始化。保存当前文字类型到内部ARX变量,将当前文字类型
  4.       设置为DIM_FONT,若系统没有DIM_FONT文字STYLE,则用西文字体ROAMNS.SHX设置DIM_FONT.

  5. 说明:"标注类型":
  6.        1."noraml: 正常设置,此标注类型的DIMSCALE变量存储当前图纸出图比例,根据此比例值,生成其他
  7.        的几个标注类型。
  8.        2."axis":此类型用于轴线标注,主要特征是:两侧没有"尺寸界线",尺寸线两头用自定义的粗线块。
  9.        3."axit":基本同"AXIS",不同是,尺寸线两头不用粗线块,而是细线。
  10.        4."angl": 用来标注角度。
  11.        5."dimn": 主要特征:两侧有"尺寸界线",尺寸线两头粗线块。
  12.        6."dimt": 两侧有"尺寸界线", 尺寸线两头细线。
  13.        7."dima": 左(下)有“尺寸界线”,右(上)没有。尺寸线两头粗线块。
  14.        8."dimu": 左(下)有“尺寸界线”,右(上)没有。尺寸线两头细线。
  15.        9."dimb": 右(上)有“尺寸界线”,左(下)没有。尺寸线两头粗线块。
  16.        10."dimv": 右(上)有“尺寸界线”,左(下)没有。尺寸线两头细线。

  17.       概念:
  18.       
  19.       出图比例:出图比例主要影响“尺寸标注”,“文字标注”等图元。他们不应该随着比例而改变。
  20.       
  21.              我们绘图一般常用比例1:100, 这时,使用的主要标注类型是上面除NORMAL列出的。
  22.                 他们除了尺寸界线等外,其余变量基本相同,如:字高300,文字字型DIM_FONT,
  23.                 文字距离尺寸线150。。。。
  24.                
  25.                 现在,若我们要出1:50的大样图怎么办?在一张图纸里面,是不能有不同的比例的。
  26.                 一个解决方法是:
  27.                     绘图时候放大1倍,然后标注时候,把DIMSCALE变量缩小1倍。使标注出的值
  28.                     符合源值。
  29.                 另个方法是:所有的图纸都按1:100绘制。修改标注时候的尺寸变量。使得标注符合
  30.                 实际比例的一半。在出图的时候,根据实际比例,做为块插入图中。
  31.                 比如:图按1:100画,标注缩小一般,出图按1:50,做为块插入,放大系数2,
  32.                 这样,标注也放大一倍。这样,标注的大小正好符合1:100时候的我们需要的正常大小。
  33.                
  34.                 上诉两种方法,明显第二种要好,因为这种方式,图纸可以根据比例灵活改变。只需在
  35.                 出图前处理下尺寸标注就可以。第二种方法好处是不用考虑值,只需考虑字高等。
  36.         
  37.        2。当标注类型是NORMAL时候,若系统没有NORAML标注类型,则自动初始化创建上面的10种类型。
  38.           这10种适合1:100情况下的各种需要的标注类型。
  39.           程序返回NORMAL标注类型的尺寸变量dimscale,返回到COMMAND:下。
  40.         
  41.        3。当参数标注类型不是NORMAL的时候,有两种情况:
  42.           例如:(xdrx_srchdim "axis") 同2,没有自动创建1:100下的10种标注类型,并把NORAML的
  43.           DIMSCALE设置为1。
  44.             a.若找到AXIS,然后读出NORMAL的DIMSCALE,若为1。0,则:
  45.               把当前标注类型设置为AXIS,返回NORMAL的DIMSCALE,
  46.               不返回COMMAND:,而保持coimmand:dim 状态下。可以接着使用DIM的命令。
  47.             b.若找到AXIS,若NORMAL的DIMSCALE不为0,比如0。5,表示出图比例为1:50
  48.               这时候,查找尺寸类型axis50是否存在,若不存在,创建axis50,把AXIS50类型的DIMSCALE设置
  49.               为0。5。
  50.               把当前标注类型设置为AXIS50,返回AXIS50的dimscale,0.5, 保持在command:dim状态下,
  51.               等待进一步的尺寸标注命令。
  52.               同时,也生成其他10种类型除NORMAL外的"***50"类型。
  53.               
  54. 示例:设置当前出图比例为1:50
  55.       在COMMAND:下依次敲入:
  56.       DIM
  57.       RES
  58.       NORAML
  59.       DIMSCALE
  60.       0.5
  61.       SAVE
  62.       NORMAL
  63.       Y
  64.       E
  65.       返回到COMMAND状态。
  66.       这时,用函数(xdrx_srchdim "axis") 将保持在DIM状态下,当前标注类型为axis50,并且已经生成了10种标注类型的"axis50","dimn50","dima50".......
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2002-3-18 13:51:31 | 显示全部楼层
最初由 梦断江南 发布
[B]什么意思?还有什么样的例子? [/B]


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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2002-3-18 14:18:03 | 显示全部楼层

Re: [编程申请]:又有新问题,关于尺寸标注

最初由 mrbean13 发布
[B]我在acad.mnl中写了如下简单的lisp,这样就可以在tch3.0中简单的用dh调用当前图形比例的dimnXX变量进行标注。但是当我把图形unit设为非整数,例如0.00,就会提示我无法创建dimnXX.00。我必须先将unit改为整数才可。?.. [/B]


你的程序可以这样修改:


  1. (defun c:dh()
  2.   (princ (strcat "当前标注比例为 1:" (rtos (* 100 (sldna "dimn")))))
  3.   (pouts "公共标注") ;;保存当前层等信息后,建立层pub_dim,英文层名在layerdef.dat里定义
  4.   (command "dimlinear")   ;; 直接执行dim 命令
  5.   (command "exit")        ;; 退出dim到command下
  6.   (mkstr2)  ;;恢复到执行本命令前的图层
  7.   (princ)
  8. )


[f]等价的XDRX_API[/f]


  1. (defun c:dh()
  2.   (xdrx_begin "公共标注") ;;保存当前层等信息后,建立层pub_dim,英文层名在layerdef.dat里定义
  3.   (princ (strcat "当前标注比例为 1:" (rtos (* 100 (xdrx_srchdim "dimn")))))
  4.   (command "dimlinear")   ;; 直接执行dim 命令
  5.   (command "exit")        ;; 退出dim到command下
  6.   (xdrx_end)  ;;恢复到执行本命令前的图层
  7.   (princ)
  8. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-20 14:01 , Processed in 0.447000 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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