设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 416|回复: 20

[求助] (已解决)文字变成线条究竟是什么原理呢

[复制链接]

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

发表于 2018-1-13 17:15:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 1121443108qaz 于 2018-3-26 13:18 编辑

我搜索论坛看了些大佬的,说是输出wmf,再调进来分解。可是我输出wmf文件后,再调进来,打破一次后还是文字无法再次打破。如果使用txtexp又达不到我的要求,在批量处理文字时,txtexp变形严重,应该圆滑的地方不圆滑。所以到底原理是怎样的,哪位大佬再给我演示演示。我输入wmf文件后显示是块参照,打破后显示属性是文字,然后就不能再打破了。为什么输出wmf,再插入进来就可以变成线条呢,这又是什么原理,有大佬懂的吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-13 17:20:58 | 显示全部楼层
插入wmf后大小是原大小0.5倍,然后是块参照
捕获.PNG
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 746 天

连续签到: 1 天

[LV.9]以坛为家II

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-1-13 17:38:36 | 显示全部楼层
去看下论坛的源代码,需要设置一个系统变量的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 117 天

连续签到: 4 天

[LV.6]常住居民II

已领礼包: 305个

财富等级: 日进斗金

发表于 2018-1-13 21:03:08 | 显示全部楼层
同求助
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-13 23:45:14 来自手机 | 显示全部楼层
Lisphk 发表于 2018-1-13 17:38

我搜索关键词 “文字 线”没找到啊,你说的源代码指的是txtexp吗?那个我看了,没看出什么特别的系统变量来,大佬费心再看看txtexp?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 524 天

连续签到: 2 天

[LV.9]以坛为家II

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-1-13 23:56:27 | 显示全部楼层

插入比例要 2.0, 然后插入基点要是绘图区的屏幕左上角坐标,这样才能原位置插入。因为制作WMF的时候,基点是按绘图区域屏幕左上角坐标为0,0点的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 524 天

连续签到: 2 天

[LV.9]以坛为家II

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-1-14 00:05:15 | 显示全部楼层

你试TTF字体是不行的,SHX 字体的,回来才会变成线。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 1773 天

连续签到: 6 天

[LV.Master]伴坛终老I

已领礼包: 4438个

财富等级: 富可敌国

发表于 2018-1-14 00:15:38 | 显示全部楼层
這個情況工也想知道怎麽解決謝謝
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-14 00:15:50 来自手机 | 显示全部楼层
marting 发表于 2018-1-14 00:05

谢谢回复,可是我就需要ttf这种格式的能变成线才好,ttf格式的用txtexp也能炸,批量处理时变形特别严重,我看txtexp代码也没看明白奥妙在哪。ttf格式的要怎么炸成线呢?你知道原理吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 524 天

连续签到: 2 天

[LV.9]以坛为家II

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-1-14 01:14:53 | 显示全部楼层

怎么个变形法? 截取个大图,贴上来看看。另外,附上DWG图。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 16 天

连续签到: 1 天

[LV.4]偶尔看看III

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-1-15 12:59:16 | 显示全部楼层
楼主牛逼,先暖后看
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-15 15:35:01 | 显示全部楼层

大佬你看下,我用黑体,2018和2004版本都试了,结果变形严重,而且会跳层,为什么txtexp对ttf文字能处理,我不用程序就没法复现呢?
捕获.PNG

test.rar

16.66 KB, 下载次数: 0, 下载积分: D豆 -1 , 活跃度 1

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 524 天

连续签到: 2 天

[LV.9]以坛为家II

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-1-15 15:45:02 | 显示全部楼层

下面是TXTEXP.LSP源码,它没什么特别的,就是用WMFOUT,WMFIN处理的TTF

  1. ;;
  2. ;;;
  3. ;;;    By Dominic Panholzer
  4. ;;;
  5. ;;;    TXTEXP.LSP
  6. ;;;    Copyright ?1999 by Autodesk, Inc.
  7. ;;;
  8. ;;;    Your use of this software is governed by the terms and conditions of the
  9. ;;;    License Agreement you accepted prior to installation of this software.
  10. ;;;    Please note that pursuant to the License Agreement for this software,
  11. ;;;    "[c]opying of this computer program or its documentation except as
  12. ;;;    permitted by this License is copyright infringement under the laws of
  13. ;;;    your country.  If you copy this computer program without permission of
  14. ;;;    Autodesk, you are violating the law."
  15. ;;;
  16. ;;;    AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS.
  17. ;;;    AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
  18. ;;;    MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC.
  19. ;;;    DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
  20. ;;;    UNINTERRUPTED OR ERROR FREE.
  21. ;;;
  22. ;;;    Use, duplication, or disclosure by the U.S. ** is subject to
  23. ;;;    restrictions set forth in FAR 52.227-19 (Commercial Computer
  24. ;;;    Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
  25. ;;;    (Rights in Technical Data and Computer Software), as applicable.
  26. ;;;
  27. ;;;  ----------------------------------------------------------------
  28. ;;;
  29. ;;;  External Functions:
  30. ;;;
  31. ;;;     ACET-ERROR-INIT           --> ACETUTIL.FAS   Intializes bonus error routine
  32. ;;;     ACET-ERROR-RESTORE        --> ACETUTIL.FAS   Restores old error routine
  33. ;;;     ACET-GEOM-ZOOM-FOR-SELECT --> ACETUTIL.FAS   Zoom boundry to include points given
  34. ;;;     ACET-LAYER-LOCKED         --> ACETUTIL.FAS   Checks to see if layer is locked
  35. ;;;     ACET-GEOM-PIXEL-UNIT      --> ACETUTIL.FAS   Size of pixel in drawing units
  36. ;;;     ACET-GEOM-TEXTBOX         --> ACETUTIL.FAS   Returns the textbox for any text
  37. ;;;     ACET-GEOM-MIDPOINT        --> ACETUTIL.FAS   Returns midpoint between two points
  38. ;;;     ACET-GEOM-VIEW-POINTS     --> ACETUTIL.FAS   Returns corner points of screen or viewport
  39. ;;;     ACET-STR-FORMAT           --> ACETUTIL.ARX   String builder
  40. ;;;     ACET-WMFIN                --> ACETUTIL.FAS   Brings in WMF file
  41. ;;;

  42. (defun c:txtexp (/ grplst getgname blknm FLTR GLST GDICT SS VIEW UPLFT TMPFIL TBX
  43.                    TMPFIL CNT PT1 PT2 ENT TXT TXTYP PTLST ZM LOCKED GNAM vpna vplocked)
  44.   (acet-error-init
  45.         (list
  46.          (list   "cmdecho" 0
  47.                  "highlight" 1
  48.                  "osmode" 0
  49.                  "Mirrtext" 1
  50.                  "limcheck" 0
  51.          )
  52.          T
  53.         )
  54.   )

  55. ; --------------------- GROUP LIST FUNCTION ----------------------
  56. ;   This function will return a list of all the group names in the
  57. ;   drawing and their entity names in the form:
  58. ;   ((<ename1> . <name1>) ... (<enamex> . <namex>))
  59. ; ----------------------------------------------------------------

  60.   (defun acet-txtexp-grplst (/ GRP ITM NAM ENT GLST)

  61.     (setq GRP  (dictsearch (namedobjdict) "ACAD_GROUP"))
  62.     (while (setq ITM (car GRP))       ; While edata item is available
  63.       (if (= (car ITM) 3)             ; if the item is a group name
  64.         (setq NAM (cdr ITM)           ; get the name
  65.               GRP (cdr GRP)           ; shorten the edata
  66.               ITM (car GRP)           ; get the next item
  67.               ENT (cdr ITM)           ; which is the ename
  68.               GRP (cdr GRP)           ; shorten the edata
  69.               GLST                    ; store the ename and name
  70.                   (if GLST
  71.                     (append GLST (list (cons ENT NAM)))
  72.                     (list (cons ENT NAM))
  73.                   )
  74.         )
  75.         (setq GRP (cdr GRP))          ; else shorten the edata
  76.       )
  77.     )
  78.     GLST                              ; return the list
  79.   )

  80. ; ------------------- GET GROUP NAME FUNCTION --------------------
  81. ;   This function returns a list of all the group names in GLST
  82. ;   where ENT is a member. The list has the same form as GLST
  83. ; ----------------------------------------------------------------

  84.   (defun acet-txtexp-getgname (ENT GLST / GRP GDATA NAM NLST)
  85.     (if (and GLST (listp GLST))
  86.       (progn
  87.         (foreach GRP GLST
  88.           (setq GDATA (entget (car GRP)))
  89.           (foreach ITM GDATA                   ; step through the edata
  90.             (if (and
  91.                   (= (car ITM) 340)            ; if the item is a entity name
  92.                   (eq (setq NAM (cdr ITM)) ENT) ; and the ename being looked for
  93.                 )
  94.               (setq NLST                       ; store the ename and name
  95.                       (if NLST
  96.                         (append NLST (list (cons (car GRP) (cdr GRP))))
  97.                         (list (cons (car GRP) (cdr GRP)))
  98.                       )
  99.               )
  100.             )
  101.           )
  102.         )
  103.       )
  104.     )
  105.     NLST
  106.   )

  107. ; ----------------------------------------------------------------
  108. ;                          MAIN PROGRAM
  109. ; ----------------------------------------------------------------

  110.   (if (and                                                ; Are we in plan view?
  111.         (equal (car (getvar "viewdir")) 0 0.00001)
  112.         (equal (cadr (getvar "viewdir")) 0 0.00001)
  113.         (> (caddr (getvar "viewdir")) 0)
  114.       )

  115.     (progn

  116.       (prompt "\nSelect text to be EXPLODED: ")

  117.       (Setq FLTR    '((-4 . "<AND")
  118.                         (-4 . "<OR")                      ; filter for mtext and text
  119.                           (0 . "MTEXT")
  120.                           (0 . "TEXT")
  121.                         (-4 . "OR>")
  122.                         (-4 . "<NOT")
  123.                           (102 . "{ACAD_REACTORS")        ; and not leader text
  124.                         (-4 . "NOT>")
  125.                       (-4 . "AND>")
  126.                      )
  127.             GLST     (acet-txtexp-grplst)                             ; Get all the groups in drawing
  128.             GDICT    (if GLST
  129.                        (dictsearch (namedobjdict) "ACAD_GROUP")
  130.                      )
  131.             SS       (ssget  FLTR)
  132.             CNT      0
  133.       )
  134.       ;; filter out the locked layers
  135.       (if SS
  136.         (setq SS (car (bns_ss_mod SS 1 T)))
  137.       ) ;if

  138.       ;; if we have anything left
  139.       (if SS
  140.         (progn
  141.           (setq CNT 0)                                 ; Reset counter
  142.           (while (setq ENT (ssname SS CNT))            ; step through each object in set

  143.             (and
  144.               GLST                                     ; if groups are present in the drawing
  145.               (setq GNAM (acet-txtexp-getgname ENT GLST))          ; and the text item is in one or more
  146.               (foreach GRP GNAM                        ; step through those groups
  147.                 (command "_.-group" "_r"               ; and remove the text item
  148.                   (cdr GRP) ENT ""
  149.                 )
  150.               )
  151.             )

  152.             (setq TBX (acet-geom-textbox (entget ENT) 0))   ; get textbox points

  153.             (setq TBX (mapcar '(lambda (x)
  154.                                  (trans x 1 0)         ; convert the points to WCS
  155.                                )
  156.                         TBX
  157.                       )
  158.             )

  159.             (setq PTLST (append PTLST TBX))            ; Build list of bounding box
  160.                                                        ; points for text items selected

  161.             (setq CNT (1+ CNT))                        ; get the next text item
  162.           ); while

  163.           (setq PTLST (mapcar '(lambda (x)
  164.                                  (trans x 0 1)         ; convert all the points
  165.                                )                       ; to the current ucs
  166.                       PTLST
  167.                     )
  168.           )

  169.           (if (setq ZM (acet-geom-zoom-for-select PTLST))          ; If current view does not contain
  170.             (progn                                     ; all bounding box points
  171.               (setq ZM
  172.                 (list
  173.                   (list (- (caar ZM) (acet-geom-pixel-unit))     ; increase zoom area by
  174.                         (- (cadar ZM) (acet-geom-pixel-unit))    ; one pixel width to
  175.                         (caddar ZM)                    ; sure nothing will be lost
  176.                   )
  177.                   (list (+ (caadr ZM) (acet-geom-pixel-unit))
  178.                         (+ (cadadr ZM) (acet-geom-pixel-unit))
  179.                         (caddr (cadr zm))
  180.                   )
  181.                 )
  182.               )
  183.               (if (setq vpna (acet-currentviewport-ename))
  184.                   (setq vplocked (acet-viewport-lock-set vpna nil))
  185.               );if
  186.               (command "_.zoom" "_w" (car ZM) (cadr ZM))  ; zoom to include text objects
  187.             )
  188.           )

  189.           (setq VIEW     (acet-geom-view-points)
  190.                 TMPFIL   (strcat (getvar "tempprefix") "txtexp.wmf")
  191.                 PT1      (acet-geom-midpoint (car view) (cadr view))
  192.                 PT2      (list (car PT1) (cadadr VIEW))
  193.           )

  194.           (if (acet-layer-locked (getvar "clayer"))       ; if current layer is locked
  195.             (progn
  196.               (command "_.layer" "_unl" (getvar "clayer") "")  ; unlock it
  197.               (setq LOCKED T)
  198.             )
  199.           )

  200.           (command "_.mirror" SS "" PT1 PT2 "_y"
  201.                    "_.WMFOUT" TMPFIL SS "")

  202.           (if (findfile tmpfil)                           ; Does WMF file exist?
  203.             (progn
  204.               (command "_.ERASE" SS "")                   ; erase the orignal text
  205.               (setq ss (acet-wmfin TMPFIL))               ; insert the WMF file
  206.               (command "_.mirror" ss "" PT1 PT2 "_y")
  207.             ) ;progn
  208.           ) ;if


  209.           (if LOCKED
  210.             (command "_.layer" "_lock" (getvar "clayer") "") ; relock if needed
  211.           ) ;if

  212.           (if ZM (command "_.zoom" "_p"))              ; Restore original view if needed
  213.           (if vplocked
  214.               (acet-viewport-lock-set vpna T) ;re-lock the viewport if needed.
  215.           );if
  216.           (prompt (acet-str-format "\n%1 text object(s) have been exploded to lines."  CNT))
  217.           (prompt "\nThe line objects have been placed on layer 0.")
  218.         )
  219.       )
  220.     )
  221.     (prompt "\nView needs to be in plan (0 0 1).")
  222.   );if equal
  223.   (acet-error-restore)                                  ; Retsore values
  224.   (princ)
  225. )


  226. (princ)


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-15 16:02:47 | 显示全部楼层

可是我手工操作为什么就是不行,shx确实调进来打破就可以了,ttf就不行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

签到天数: 129 天

连续签到: 2 天

[LV.7]常住居民III

已领礼包: 28个

财富等级: 恭喜发财

 楼主| 发表于 2018-1-15 16:14:33 | 显示全部楼层
发现是mirrtext 没有变成1的原因。正确的操作是 先mirrtext改为1,把原文字mi一次,再wmfout,wmfin,这时再mi一次,再打破。就可以变成线框了。至于为什么要先mirrtext改为1就不懂了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2018-10-16 03:17 , Processed in 0.231201 second(s), 62 queries , Gzip On, WinCache On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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