从属性获取字段文本?
我有值属性:100平方米
其中“100”是字段值(多段线的面积),“m2”是普通字符串。
如果有字段,则属性字符串应如下所示:
“%%”)。面积\\f\%lu2%pr2\”>%m2”
但intead(vla put TextString Attr)正在返回普通的“100 m2”。
是否有返回“%1”的函数 你好
vla FieldCode返回字段代码,但不适用于属性。
下面是一个例程,它可以处理文本多行文字或属性,甚至可以处理嵌套字段(公式)
;;gc:字段代码(gile);;返回属性文本或多行文字计数字段代码的字符串;;;;参数:实体名称(ENAME)(defun gc:FieldCode(ent/foo elst xdict dict field str);-----------------------------------------------------------------;;(defun foo(field str/pos fldID objID)(setq pos 0)(if(setq pos(vl string search“\ \ \ u FldIdx”str pos))(while(setq pos(vl string search“\ \ u FldIdx”str pos))(setq fldID(entget(cdr(assoc 360 field)))field(vl remove(assoc 360 field)field)str(strcat(substr str 1 pos)(if(setq objID(cdr(assoc 331 fldId))(vl string subst(strcat“ObjId”(itoa(gc:EnameToObjectId ObjId)))“ObjIdx”(cdr(assoc 2 fldId)))(foo fldId(cdr(assoc 2 fldId))))(substr str(1+(vl string search“>%”str pos)))))str);;-----------------------------------------------------------------;;(setq elst(entget ent))(if(and(member(cdr(assoc 0 elst))(“ATTRIB”“MTEXT”“TEXT”))(setq xdict(cdr(assoc 360 elst))(setq dict(dictsearch xdict“ACAD_FIELD”))(setq FIELD(dictsearch(cdr(assoc-1 dict))“TEXT”))(setq str(foo FIELD(cdr(assoc 2 FIELD))));;=============================================================;;;;gc:EnameToObjectId(gile);;从名称;;;返回对象ID;;;;参数:一个ename(由enlast、entsel…返回)(defun gc:enametobjectid(ename)((lambda(str)(hex2dec(substr(vl string right trim“>”str)(+3(vl string search:“str))))))(vl princ to string ename));;================================================;;;;hex2dec(gile);;将十六进制转换为十进制;;;;参数:十六进制(字符串);;返回:整数(defun hex2dec(s/r l n)(setq r 0 l(vl string->list(strcase s))(while(setq n(car l))(setq l(cdr l)r(+(*r 16)(-n(if(
页:
[1]