开始学习lisp的好时机(setq str是一个用于测试目的的样本行,对entsel或ssget、entget和assoc进行一些搜索,它们一起工作,允许您选择文本并返回文本字符串,您将在上面的代码中设置为str。只需阅读一些lisp示例,您就会很快看到
第二部分阅读塔瓦特邮报,然后最终解决方案就会出来。 请参阅此线程中的附加图像。 请参见所附图片作为示例
(Defun c:m45 (/ str ent ll [t 45:s txt ur)
;;; pBeMay2014 ;;;
(princ "\nSelect Text objects")
(if (setq strs (ssget "_:L" '((0 . "TEXT"))))
(repeat (Setq i (sslength strs))
(setq ent (entget (ssname strs (setq i (1- i))))
pt (cdr (assoc 10 ent))
str (cdr (assoc 1 ent)) cl 1
)
(repeat (1+ (/ (strlen str) 45))
(setq 45:S (substr str 1 45))
(setq txt (entmakex (list (cons 0 "TEXT")
(cons 10 pt)
(Cons 1 45:S)
(assoc 7 ent)
(assoc 40 ent)
(cons 62 cl);<-color for identification
)
)
)
(vla-getboundingbox (vlax-ename->vla-object txt) 'll 'ur)
(setq ur (vlax-safearray->list ur))
(setq pt(list (car ur) (cadr pt))
cl(1+ cl)
str (substr str 46)
)
)
(entdel (ssname strs i))
)
)
(princ)
))
但我同意比格尔的观点
@ymg公司
注意:
(setq strlst (cons (substr str x (- len 1)) strlst) x (+ x len -1))
每项生成44个字符串的列表
不确定,但这应该是公正的吗
(setq strlst (cons (substr str x len) strlst)x (+ x len ))
但代码实际上并不是我所需要的。代码应该首先要求选择文本,然后拆分它。 你是说你需要在同一个地方用45个字符的字符串替换选中的文本实体吗?因为在你13号帖子和世界其他地方发布的图片上,它看起来不是那样的。
我内心的善良只会给你一次机会。正如塔瓦特已经要求的那样,请张贴一张样图 像这样的lisp例程的问题是很容易得到这样的结果。。。
通常用于描述ba的语言
共和党内部正在发生的事情令人担忧
g和误导性。今年春天的比赛不是
在“草根”和“体制”之间
nt”,但在两个建立分数sp之间
结束巨额资金以占上风。泰伊
r对抗与长ter无关
共和党的哲学方向。非常富有
明白我的意思吗?文字会被不自然地剪掉,不会像在正常的书面文本中那样插入连字符。在我看来,这是个坏主意。 这是我的变体,但没有时间测试代码,因为我现在必须离开办公室。
(defun c:Test (/ _l ss)
;; Tharwat 18. May. 2014 ;;
(defun _l (e / a b l)
(vla-getboundingbox (vlax-ename->vla-object e) 'a 'b)
(setq l (mapcar 'vlax-safearray->list (list a b)))
(distance (car l) (cadr l))
)
(if (setq ss (ssget "_:L" '((0 . "TEXT"))))
((lambda (i / sn st pt e en j n)
(while (setq sn (ssname ss (setq i (1+ i))))
(if (> (strlen (setq st (cdr (assoc 1 (setq en (entget sn)))))) 45)
(progn (setq pt (cdr (assoc 10 en))
e(cdr (assoc -1 (entmod (append en (list (cons 1 (substr st 1 45)))))))
st (substr st 46)
)
(repeat (1+ (/ (strlen st) 45))
(setq
e (entmakex (append (vl-remove-if-not '(lambda (x) (member (car x) '(0 8 62 40 41 50))) (entget e))
(list (cons 1 (substr st 1 45))
(cons 10 (setq pt (polar pt (cdr (assoc 50 (entget e))) (_l e))))
)
)
)
)
(setq st (substr st 46))
)
)
)
)
)
-1
)
)
(princ)
) (vl-load-com)
我知道你的意思。。。但我们的“最后一次机会”节目确实说:
我想,如果程序将字符串拆分到同一个位置,它仍然“看起来”正常。
编辑:等等。我相信OP确实说过将结果导出到外部文件。也许你有什么意见,[现在我很困惑]
FWIW:代码在14日后更新
@塔瓦特
在那里输入7作为TEXTSTYLE
...(member (car x) '(0 7 8 62 40 41 50)).. 是,在同一位置用分割的45个字符串替换选定的文本实体。见附图。
样品图纸
页:
1
[2]