![]() |
【转帖】标注样式中怎样设置箭头样式?
标注样式中怎样设置箭头样式?
www.dimcax.com 标注样式中怎样设置箭头样式? database m_db = hostapplicationservices.workingdatabase; using (application.documentmanager.mdiactivedocument.lockdocument()) { using (transaction m_tr = m_db.transactionmanager.starttransaction()) { dimstyletable m_dst = (dimstyletable)m_tr.getobject(m_db.dimstyletableid, openmode.forwrite, false); if (!m_dst.has(m_dimstylename)) { try { dimstyletablerecord m_dstr = new dimstyletablerecord(); m_dstr.name = m_dimstylename;// m_dstr.dimtxsty = m_textstyleid;//文字样式id m_dstr.dimtxt = m_textheight;//文字高度 m_dstr.dimblk =???;//箭头样式???怎样得到标注样式中内置的箭头样式块的id? m_dstr.dimasz = 1.8;//箭头大小 m_dimstyleid = m_dst.add(m_dstr); m_tr.addnewlycreateddbobject(m_dstr, true); } catch (system.exception ex) { m_ed.writemessage("\n创建新标注样式 " + m_dimstylename + " 不成功!" + " 错误信息: " + ex.message); } } else { m_dimstyleid = m_dst[m_dimstylename]; } m_tr.commit(); } } 箭头是以块的形式存在,你要改变箭头,需要重新设置注标样式箭头的块id,以下过程是返回块id,将它设置给下面属性。 .dimblk = blkid .dimblk1 = blkid .dimblk2 = blkid public function getarrowblock(byval blkarrow as string) as objectid dim blkid as objectid application.setsystemvariable("dimblk", blkarrow) dim db as database = hostapplicationservices.workingdatabase using trans as transaction = db.transactionmanager.starttransaction() dim bt as blocktable = ctype(trans.getobject(db.blocktableid, openmode.forread, false), blocktable) dim btr as blocktablerecord = ctype(trans.getobject(bt.item(blkarrow), openmode.forread), blocktablerecord) blkid = btr.objectid trans.commit() end using return blkid end function 复制代码 这个是箭头的系统变量 设置尺寸线末端显示的箭头块。 要返回默认值(实心闭合箭头显示),请输入单个句点 (.)。“新建标注样式”、“修改标注样式”和“替代当前样式”对话框中用于选择箭头块的项和名称如下所示。还可以输入用户定义的箭头块名称。注意 注释性块不能用作标注或引线的自定义箭头。 "" 实心闭合 "_dot" 点 "_dotsmall" 小点 "_dotblank" 空心点 "_origin" 原点标记 "_origin2" 原点标记 2 "_open" 打开 "_open90" 直角 "_open30" 30 度角 "_closed" 闭合 "_small" 空心小点 "_none" 无 "_oblique" 倾斜 "_boxfilled" 实心框 "_boxblank" 框 "_closedblank" 空心闭合 "_datumfilled" 实心基准三角形 "_datumblank" 基准三角形 "_integral" 完整标记 "_archtick" 建筑标记 我就是搞不明白,为什么要先把系统变量设置了才行? 这样的话,如果不把系统变量改回来,其他标注样式的箭头都会变成我现在的设置,这不是我希望的 晕哦,怎么系统变量dimblk改不回来默认值"" 了 application.setsystemvariable("dimblk", "") 出错!!!! 一样不行! 只要原先dimblk的值是默认值(就是""),application.setsystemvariable("dimblk", oldvariable)这句就会出错,晕唠 设置尺寸线末端显示的箭头块。 要返回默认值(实心闭合箭头显示),请输入单个句点 (.) application.setsystemvariable("dimblk", ".") 这个过程我已经测试过了,完全可以用了。 public shared function getarrowblock(byval blkarrow as string) as objectid dim blkid as objectid dim oldvariable as string = application.getsystemvariable("dimblk") application.setsystemvariable("dimblk", blkarrow) dim db as database = hostapplicationservices.workingdatabase using trans as transaction = db.transactionmanager.starttransaction() dim bt as blocktable = ctype(trans.getobject(db.blocktableid, openmode.forread, false), blocktable) dim btr as blocktablerecord = ctype(trans.getobject(bt.item(blkarrow), openmode.forread), blocktablerecord) blkid = btr.objectid trans.commit() end using if oldvariable = "" then application.setsystemvariable("dimblk", ".") else application.setsystemvariable("dimblk", oldvariable) end if return blkid end function 1 |
所有的时间均为北京时间。 现在的时间是 03:48 AM. |