明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

[讨论] 【e派】关于文本炸碎取外轮廓线步骤的探讨

  [复制链接]
发表于 2015-8-15 12:07 | 显示全部楼层
edata 发表于 2015-8-15 11:50
凑个热闹,思路是llsheng_73提到的折返线处理,用的老方法,region加union。

E大,能否贴出源码吗?
之前用过上些, 不是很完美, 主要是一些细节部分 ,还有位置会移动

点评

region后可能还要打碎再连接  发表于 2015-8-16 12:07
发表于 2015-8-15 20:05 | 显示全部楼层
;文字分解 这里有个也不是很好,
(defun c:WZFJ (/ bz ss n lvs lss lvp lvl lul ent luu)
     (setvar "cmdecho" 0) ;指令执行过程不响应
     (PRINC "\n文字分解功能")
(princ "\n-->请选取要分解的文字.....")
(setq ss (ssget ":S" '((0 . "*text"))))
(setvar "cmdecho" 0) (command "undo" "be") (setvar "mirrtext" 1)
(command "zoom" "e")
(setq bz (getvar "osmode")) (setvar "osmode" 0)
(setq lvs (getvar "viewsize") lss (getvar "screensize") lvp (getvar "viewctr")
      lvl (list (list (- (car lvp) (* 0.5 (* lvs (/ (car lss) (cadr lss))))) (- (cadr lvp) (* 0.5 lvs)))
            (list (+ (car lvp) (* 0.5 (* lvs (/ (car lss) (cadr lss))))) (+ (cadr lvp) (* 0.5 lvs))))
   lul (list (caar lvl) (cadadr lvl)) n 0)
(repeat (sslength ss)
  (setq ent (ssname ss n))
  (setq luu (strcat (getenv "Temp") "\\textb.wmf"))
  (command "mirror" ent "" lvp "@0,1" "y"
  "wmfout" luu ent "" "erase" ent ""
  "wmfin" luu lul "2" "" ""
  "mirror" (entlast) "" lvp "@0,1" "y"
  "explode" (entlast) "erase" (ssget "p") "r" "w"
  (polar (car lvl) (* 0.25 pi) (max (abs (/ lvs (cadr lss))) (abs (/ (* lvs (/ (car lss) (cadr lss))) (car lss)))))
  (cadr lvl) "") ;;end_command
  (setq n (+ n 1))
)
(command "zoom" "p")
(setvar "mirrtext" 0) (setvar "osmode" bz) (command "undo" "e")
(vl-file-delete luu)

     (PRINC "\n 文字分解完成!")(PRINC))

点评

在此基础上可以考虑最大边框,BOUNDARY ,试试!  发表于 2015-8-15 23:41
发表于 2015-8-16 11:23 | 显示全部楼层
1至7步可通过(C:txtexp)完成

点评

讨论的是没一步的具体方法  发表于 2015-8-16 12:08
发表于 2015-8-16 12:27 | 显示全部楼层
和txtexp有区别的是否镜像文本,如果不镜像,在文字倾斜的时候,能就得不到正确的结果,
不镜像的文字导入后是2D pl线,镜像后是直线,不镜像点位对不齐,union不出正确的结果。
镜像后处理重复线,但是速度会影响。。
个人觉得处理重复线是重点,怎样高速处理重复线。。。
 楼主| 发表于 2015-8-16 12:52 | 显示全部楼层
本帖最后由 xyp1964 于 2015-8-16 13:06 编辑
edata 发表于 2015-8-16 12:27
和txtexp有区别的是否镜像文本,如果不镜像,在文字倾斜的时候,能就得不到正确的结果,
不镜像的文字导入 ...

  1. ;; 两实体是否完全重合
  2. (defun xyp-SameCheck-S1S2 (s1 s2)
  3.   (if (equal (vl-remove-if  '(lambda (x) (member (car x) '(-1 5)))(entget s1))
  4.                 (vl-remove-if  '(lambda (x) (member (car x) '(-1 5)))(entget s2))
  5.       )
  6.     t
  7.     nil
  8.   )
  9. )
 楼主| 发表于 2015-8-16 13:04 | 显示全部楼层

  1. ;; 直线格式化
  2. (defun xyp-Line-DtFormat (s1 / rad p1 p2)
  3.   (setq p1  (xyp-dxf 10 s1)
  4.         p2  (xyp-dxf 11 s1)
  5.         rad (angle p1 p2)
  6.   )
  7.   (if (or (equal rad pi 1e-3)
  8.           (and (>= rad pi)
  9.                (not (equal rad (* 2 pi) 1e-3))
  10.           )
  11.       )
  12.     (xyp-SubUpd s1 '(10 11) (list p2 p1))
  13.   )
  14.   s1
  15. )
发表于 2015-8-24 15:23 | 显示全部楼层
edata 发表于 2015-8-15 11:50
凑个热闹,思路是llsheng_73提到的折返线处理,用的老方法,region加union。

码呢? 此主题怎么就无疾而终呢?
发表于 2015-8-25 08:47 | 显示全部楼层
对于院长来说, 这个不是难事吧
发表于 2015-8-25 10:00 | 显示全部楼层
yyzhan12 发表于 2015-8-25 08:47
对于院长来说, 这个不是难事吧

确实不是难事 , 院长编程是厉害, 但是缺想法,  一个人想太累, 不好意思, 借用一下各位的思维
发表于 2015-8-31 19:25 | 显示全部楼层
jltx123456 发表于 2015-8-25 10:00
确实不是难事 , 院长编程是厉害, 但是缺想法,  一个人想太累, 不好意思, 借用一下各位的思维

哈哈, 原来这样啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-5 17:38 , Processed in 0.185313 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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