QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2484|回复: 7
收起左侧

[已解决] autocad尺寸標誌圖層問題

[复制链接]
发表于 2012-11-5 09:42:15 | 显示全部楼层 |阅读模式 来自: 中国台湾

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

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

x
請問尺寸標註時, 如何自動跳到設定的圖層  T+ B$ ^* e! h) D
例如原本在0層做圖...標尺寸時, 尺寸線會自動跳到設定的dim層
8 D, A7 i4 a. x+ |原本的電腦有設定, 但在新電腦安裝後...卻忘了這個怎設定了...' g  I/ Y) {- M2 E7 M$ c1 s
发表于 2012-11-5 13:45:14 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2012-11-5 14:19 编辑 ( g" U+ R5 \+ I5 S9 P
# W$ E1 ]  J0 n0 r0 C9 p& v
复制下面的代码,将其粘贴在VBAIDE的thisdrawing代码窗口
  1. Dim OldLayer As AcadLayer
    $ P) M2 F' K3 K. `: T, a
  2. % x$ a" @/ s. _5 f
  3. Private Sub AcadDocument_BeginCommand(ByVal CommandName As String)
    * v2 r5 v0 ?% ^5 W( S1 m# ?
  4.     On Error Resume Next
    0 E% @3 ^4 r% H! f
  5.     If CommandName = "DIMLINEAR" Or CommandName = "DIMALIGNED" Or CommandName = "DIMARC" Or CommandName = "DIMORDINATE" Or CommandName = "DIMRADIUS" Or CommandName = "DIMJOGGED" Or CommandName = "DIMDIAMETER" Or CommandName = "DIMANGULAR" Or CommandName = "QDIM" Or CommandName = "DIMBASELINE" Or CommandName = "DIMCONTINUE" Or CommandName = "QLEADER" Or CommandName = "TOLERANCE" Then
    - \/ ]# a$ O; ^4 U+ P2 M3 J+ c5 d
  6.         Set OldLayer = ThisDrawing.ActiveLayer
    0 X5 u, B+ ?8 ^% I/ D4 |2 o5 x9 |
  7.         ThisDrawing.ActiveLayer = ThisDrawing.Layers("Dim")1 L; H5 p: r/ N% Y4 |3 J9 }: ~6 b
  8.     End If
    - ]  W9 l* n# M* Z3 U+ G; ], q
  9. End Sub: z$ E8 h& v/ B. T# N  [
  10. ! u: h* E6 l* k/ e( o6 I  h' V
  11. Private Sub AcadDocument_EndCommand(ByVal CommandName As String)
    ' v; W, a9 U* b6 o3 T* W
  12.     If CommandName = "DIMLINEAR" Or CommandName = "DIMALIGNED" Or CommandName = "DIMARC" Or CommandName = "DIMORDINATE" Or CommandName = "DIMRADIUS" Or CommandName = "DIMJOGGED" Or CommandName = "DIMDIAMETER" Or CommandName = "DIMANGULAR" Or CommandName = "QDIM" Or CommandName = "DIMBASELINE" Or CommandName = "DIMCONTINUE" Or CommandName = "QLEADER" Or CommandName = "TOLERANCE" Then/ G. R( s$ E3 ^4 i5 x+ P
  13.         ThisDrawing.ActiveLayer = OldLayer* ~. n1 _: G' z& \# M8 ?6 F: K
  14.     End If
    7 Y6 \! r2 b+ Z$ m
  15. End Sub
复制代码
其中第7行的"Dim"应改为实际用于标注的图层名(必须在文档中真实存在)8 I* q) L, k0 ^/ x
在图形界面使用CAD命令时,程序会自动检测命令名.如果属于代码中涉及到的11个标注命令,代码会把当前图层改为标注图层;命令结束时再自动改回原来的图层.7 w7 C' {# [: g1 Y
如果想增加对其它命令的支持,可以自行修改第5行和第12行., L. H0 O  o0 B
可以在VBAIDE中保存代码为DVB工程文件,便于以后重复使用.
9 V. j3 G* m- P3 m0 }. a" ]/ _还可以把该工程文件命名为"ACAD.DVB"并保存在支持文件搜索目录中,并把"ACVBA.ARX"添加到启动组,使ACAD启动时即自动加载该工程文件.

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 应助

查看全部评分

 楼主| 发表于 2012-11-5 13:52:11 | 显示全部楼层 来自: 中国台湾
感謝你的回覆...
7 G7 F8 M2 x' c' z: ~VBAIDE這個是如何修改??) s* l" c/ [( f: y
我記得以前好像是用筆記本修改.mnu這個檔案...是相同嗎??
发表于 2012-11-5 14:04:55 | 显示全部楼层 来自: 中国台湾
我们是靠 AutoLAy 来达成- E: }; ]* k' _( Q: Z; p
" F1 w1 P5 }" l' y3 u
9 g8 j6 o& z, H0 |# o3 K3 H
但有人反应似乎有着版本差异的问题
$ i4 E1 q( N! S& e4 W4 RRef: http://www.cadtutor.net/forum/sh ... Autolay.lsp-in-2010' _8 I% _' e$ |% f/ d
http://forums.autodesk.com/t5/Vi ... roblem/td-p/2218840  |. S3 w( O8 J

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

发表于 2012-11-5 14:59:13 | 显示全部楼层 来自: 中国辽宁
本帖最后由 woaishuijia 于 2012-11-5 15:03 编辑
2 A0 t6 m1 o7 d3 J/ O
% W% Z1 B5 U* C! i" Y) R# A先答复3楼,用这段代码的前提是安装了VBA模块.用"VBAIDE"命令打开VBA编辑器,双击"工程资源管理器"中的"ThisDrawing"对象,就会弹出"Code"窗口,粘贴就可以了.
8 V/ ^6 P: V4 M  D3 a' D9 f不过之前没注意到楼主是台湾朋友,听说那边用VBA的不多,所以不能确定这段代码对你是否有用.6 N; R) Y/ i3 f' Q, o; V" `) ]
2005及以前版本修改MNU文件也是一个办法,2006以后就没有这个文件了,因为CAD的自定义内容更多更复杂,因而采用其它文件格式了.不过这也没关系,可以在自定义对话框中修改.只要在某个用于标注的工具栏按钮的命令宏中添加一段用于更改图层的命令和参数就行了.比如,"线性标注"命令(dimlinear),打开自定义对话框,找到"标注"工具栏,再找到"线性"按钮,可以看到其命令宏是"^C^C_dimlinear "(注意,对话框中没有双引号;命令宏中最后一个字符是一个空格--这相当于在命令行中输入回车),现在可以把它改成"^C^C_-layer s Dim  dimlinear ",这个宏的意思就是相当于在命令行选输入"-layer"命令(即"layer"命令的命令行形式),回车,再输入"s"关键字,回车,再输入图层名,回车,回车,"dimlinear"命令,回车.
, x/ i5 B/ j8 {9 v! s$ k使用这种办法需要对每个涉及到的标注命令都更改一遍,麻烦.而且还要事先做备份,以防备万一.所以本人和5楼(也是来自台湾的朋友,很擅长LISP)一样,更喜欢用外部程序(插件).* M1 r2 d; k. S# B6 M
5楼提供的LISP程序我没有看.我想道理和上面自定义命令宏应该是一样的,所以才会发生版本问题.由于LISP更多的是直接调用CAD图形界面的命令,而CAD图形界面的命令又在不断升级更新中,导致LSP代码经常不能适应新版本CAD.不过,由于ActiveX的内容相对稳定,用VLSP的反应器和GET,PUT函数(和2楼的VBA代码采用同样的方法)问题应该会减少很多

评分

参与人数 1三维币 +5 收起 理由
★新手★ + 5 技术讨论

查看全部评分

 楼主| 发表于 2012-11-5 15:04:33 | 显示全部楼层 来自: 中国台湾
woaishuijia 发表于 2012-11-5 14:59 static/image/common/back.gif
" K/ e: `* F2 C7 K: X$ Z先答复3楼,用这段代码的前提是安装了VBA模块.用"VBAIDE"命令打开VBA编辑器,双击"工程资源管理器"中的"ThisD ...

: A8 v7 S' j& q9 d確實我們這邊少人用vba來修改6 H) m' e! G4 S- F' T2 q/ _
可以確定的是我是修改mnu文件來設定這個問題....
, _! M# c6 r) A$ I0 h. w+ B但怎改的參數...忘了3 W) F" L2 ?; F% D4 U3 q7 S
來試試看你的這個方法或許可行....再次謝謝  x8 N2 z, C% x5 \/ e
发表于 2012-11-5 22:01:50 | 显示全部楼层 来自: 中国台湾
改menu参考:; e8 B, O3 h% G9 e# M6 F( U
工具>自订>介面>功能表>标注>线性  
4 n, w" S+ P5 P4 ~巨集    ^C^C$S=X $S=LINE LAYER S dim;;dimlinear

评分

参与人数 1三维币 +5 收起 理由
woaishuijia + 5 应助

查看全部评分

 楼主| 发表于 2012-11-6 13:57:54 | 显示全部楼层 来自: 中国台湾
hottee2009 发表于 2012-11-5 22:01 static/image/common/back.gif
/ t' n  m7 ]5 x3 e* u2 r. o改menu参考:
$ ^& d& y# M0 b2 r3 R# q& N工具>自订>介面>功能表>标注>线性  
7 d, C( D( o0 N$ x5 F8 `( z巨集    ^C^C$S=X $S=LINE LAYER S dim;;dimlinear
* w0 W) l7 B0 H4 ^. ^# O# a
感謝
' w0 W, M/ u6 J5 d0 i4 D- b; p終於有點記憶了3 p% \& e" u" J; e8 n
以下是我的改法
# [: U1 Q# u8 i3 T**DIMENSION5 ^% C8 O: v/ p8 H' L+ j' @' L
ID_MnDimensi   [標註(&N)]  ^6 j& J; E; f1 |
ID_QDim        [快速標註(&Q)]^C^Cclayer dim ^C^C_qdim
/ o  u& v  y" K  J. t5 Y5 y& x. a               [--]" q( ]4 d* E# s5 f
ID_Dimlinear   [線性(&L)]^C^Cclayer dim ^C^C_dimlinear 6 j! g# K/ [' j
ID_Dimaligne   [對齊式(&G)]^C^Cclayer dim ^C^C_dimaligned 8 S( O+ ]* S! X0 w  i( G' j) X
ID_Dimordina   [座標式(&O)]^C^Cclayer dim ^C^C_dimordinate
1 z: X2 Z! @# u+ Y/ Q9 S( u7 w( H               [--]
: X9 F0 w- b; I0 m) G9 L+ MID_Dimradius   [半徑(&R)]^C^Cclayer dim ^C^C_dimradius
1 l& z+ I* h3 YID_Dimdiamet   [直徑(&D)]^C^Cclayer dim ^C^C_dimdiameter 7 Q1 t8 _" z' C
ID_Dimangula   [角度(&A)]^C^Cclayer dim ^C^C_dimangular ( [3 P% ~( @$ t* q
               [--]- C! i5 K' o  i  j" K% @
ID_Dimbaseli   [基線式(&B)]^C^Cclayer dim ^C^C_dimbaseline
9 y; P9 F8 z; c) gID_Dimcontin   [連續式(&C)]^C^Cclayer dim ^C^C_dimcontinue
3 {: K5 L' X# y/ r               [--]0 h# O' R2 c" {# V& A: f, d
ID_Leader      [引線(&E)]^C^Cclayer dim ^C^C_qleader
6 ]: m# ~0 u4 G$ e( rID_Tolerance   [公差(&T)...]^C^Cclayer dim ^C^C_tolerance - F1 |- t( J. S" R
ID_Dimcenter   [中心點標記(&M)]^C^Cclayer dim ^C^C_dimcenter 9 l0 x1 e% q/ ]4 z  _& Y% Z% d2 H
               [--]

评分

参与人数 1三维币 +3 收起 理由
woaishuijia + 3 感谢分享

查看全部评分

发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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