关于AUTOCAD的字体文体*.shx和形文件*.shp *.shx
关于AUTOCAD的字体文体*.shx和形文件*.shp*.shx有哪位大虾做过写*.SHP和*.shx文件的程序?我连格式都不知道.
有的话不吝赐教.源代码或是相关资料都行,很急. 关注,我也很想知道,特别是shx的,网上有个软件叫shx2shp,不知道是怎么实现的!
这个话题太大,且真正做起来很繁琐,在这提供个学习的方向
关于SHP文件代码格式,参见ACAD帮助->自定义手册->形和形字体。这里的说明应该足够详细了。SHP文件形定义的源代码,SHX是编译后的形文件,用于ACAD加载使用。 谢谢你,是的,从形定义文件可以通过编译变成形文件,但是怎么做反编译呢???给个思路好吗?? AutoCAD 中 汉 字 与 数 字 字 母 的 协 调许 兵
---- 使 用AutoCAD 的 用 户 都 有 这 样 的 感 受: 所 使 用 的 仿 宋 体 汉 字 与 小 字 体 的 数 字 字 母 写 在 一 起 时 大 小 不 协 调, 数 字 字 母 显 得 比 汉 字 大, 汉 字 中 的 一 些 符 号 位 置 偏 低, 影 响 美 观, 因 而 希 望 通 过 修 改 汉 字 形 文 件 来 改 变 这 种 状 况。 但 修 改 汉 字 形 文 件, 需 要ASCII 码 的 源 形 文 件(.shp), 通 常 我 们 只 有 编 译 后 的 二 进 制 汉 字 形 文 件(.shx), 没 有 汉 字 的 源 形 文 件。 汉 字 形 文 件 是 大 字 体 形 文 件, 笔 者 经 过 探 索, 弄 清 了 编 译 后 的 大 字 体 形 文 件 的 结 构 以 及 几 个 在 参 考 资 料 上 不 见 公 布 的 形 定 义 特 殊 码 含 义, 据 此 编 制 了 将 二 进 制 大 字 体 形 文 件 转 换 为 源 形 文 件 的 程 序, 并 且 对 得 到 的 源 形 文 件 进 行 修 改, 编 译 得 到 了 令 人 满 意 的 二 进 制 仿 宋 体 形 文 件。 下 面 就 是 具 体 的 实 现 步 骤。
一、 二 进 制 大 字 体 形 文 件 的 结 构
---- 二 进 制 大 字 体 形 文 件 由3 部 分 组 成: 文 件 头、 索 引 部 分 和 形 定 义 部 分。
---- 1. 文 件 头
---- 文 件 头 包 括 大 字 体 版 本、 索 引 项 数、 换 码 范 围 个 数、 始 码1、 终 码1、 始 码2、 终 码2 等 等, 例:
----“AutoCAD-86 bigfont 1.0” 0D 0A 1A 08 00
------------------大字体版本
----CD 2B----03 00 ----A1 00----A3 00 ----A6 00----A6 00
---索引项数---换码数-----始码1----终码1------始码2----终码2
---- 2. 索 引 部 分
---- 每 个 索 引 项8 个 字 节, 包 括 编 码、 形 定 义 字 节 数 及 形 定 义 在 形 文 件 中 的 偏 移 位 置, 例:
---- 00 00 ----0E 00---- 93 5E 01 00
---- 编码-------长度---------偏 移
---- 3. 形 定 义 部 分
---- 编 码 为0 的 形 定 义 格 式 比 较 特 殊, 为 字 体 名、0、 字 高、 向 下、 方 式、0, 例:
---- “HZ 1/6/92”---- 00----7F---- 00---- 02----00
-------字体名---------------字高----向下----方式
---- 其 他 编 码 的 形 定 义 以1 个 字 节00 或2 个 字 节30 00 开 头, 其 后 为 有 效 形 定 义 字 节。
二、 大 字 体 源 形 文 件 的 格 式
---- *BIGFONT 字 符 数 目, 换 码 范 围 个 数, 始 码1, 终 码1, … …
---- *0,4, 字 体 名
---- 字 高, 向 下, 方 式,0
---- * 编 码1, 定 义 字 节 数, 形 名 称
---- 字 节1, 字 节2, …,0
---- … …
---- 字 节 可 以 采 用 十 六 进 制 表 示, 高4 位 表 示 矢 量 长 度( 从1 至F, 即 最 长 为15), 低4 位 表 示 矢 量 方 向( 见 图1), 并 且 必 须 前 导 一 个0 作 为 十 六 进 制 表 示 的 标 记。 字 节 也 可 以 采 用 十 进 制 表 示, 此 时 不 需 前 导 任 何0, 但 可 带 负 号, 它 们 通 常 用 于 表 示 特 殊 码、 位 移 量 或 比 例 因 子。
----下 面 给 出 特 殊 码 及 它 们 的 含 义:
---- 0 形 定 义 结 束
---- 1 落 笔
---- 2 抬 笔
---- 3 用 下 一 字 节 除 矢 量 长 度
---- 4 用 下 一 字 节 乘 矢 量 长 度
---- 5 进 栈
---- 6 出 栈
---- 7 引 用 下 一 字 节 编 码 的 形 定 义
---- 8 由 下 两 个 字 节 给 出X 和Y 位 移 量( 可 用 圆 括 号 括 起 来)
---- 9 后 跟 有 多 个X 和Y 位 移 量, 并 需 要(0,0) 结 束
---- 10 由 下2 个 字 节( 半 径, 方 向) 定 义 一 个 圆, 方 向 取 值 范 围 为010 ~070, 高4 位 表 示 方 向, 低4 位 为0
---- 11 用 下5 个 字 节( 字 节1, 字 节2, 字 节3, 半 径, 字 节5) 定 义 一 个 圆 弧, 字 节1 影 响 起 始 角, 字 节2 影 响 终 止 角, 字 节3 影 响 半 径, 字 节5 高4 位 表 示 方 向, 低4 位 决 定 弧 度 角
---- 12 由 下3 个 字 节(X 位 移,Y 位 移, 凸 度) 定 义 一 个 圆 弧
---- 13 定 义 多 段 圆 弧, 并 需 用(0,0) 结 束
---- 14 使 后 面 的 一 个 特 殊 码 不 起 作 用
三、 编 制 转 换 程 序 的 步 骤
---- 1. 读 索 引 项 数、 换 码 范 围 个 数 及 换 码。
---- 2. 将 长 度 不 为0 的 索 引 项 全 部 读 入 内 存, 读 入 内 存 的 项 数 即 为 字 符 数 目。
---- 3. 写 源 形 文 件 的 第 一 行。
---- 4. 将 读 入 内 存 的 索 引 项 按 编 码 从 小 到 大 顺 序 排 序。 因 排 序 时 间 较 长, 因 此 排 序 每 完 成 一 步 在 屏 幕 上 显 示 计 数, 以 表 示 排 序 正 在 进 行。
---- 5. 处 理 编 码 为0 的 形 定 义, 写 入 源 形 文 件。
---- 6. 处 理 每 个 字 符 的 形 定 义, 并 写 入 源 形 文 件。 编 码 用 十 六 进 制 表 示, 形 名 称 用 编 码 去 掉 前 导0 表 示, 索 引 项 中 的 长 度 减 去 形 定 义 开 头 的 无 效 字 节 数 为 源 形 文 件 定 义 字 节 数。 形 定 义 中 的 矢 量 用 十 六 进 制 表 示, 特 殊 码 用 十 进 制 表 示。 特 殊 码 所 带 字 节 按 下 面 规 则 转 换:
---- 3、4 后 面 的1 个 字 节 用 无 符 号 十 进 制 表 示;
---- 7 后 面 的1 个 字 节 用 十 六 进 制 表 示;
---- 8、9 后 面 的 字 节 都 用 有 符 号 十 进 制 表 示, 最 好 加 上 括 号;
---- 10 后 第1 字 节 用 无 符 号 十 进 制 表 示, 第2 字 节 用 十 六 进 制 表 示;
---- 11 后 前3 个 字 节 用 十 六 进 制 表 示, 半 径 用 无 符 号 十 进 制 表 示, 最 后1 个 字 节 用 十 六 进 制 表 示。 转 换 最 后1 个 字 节 时, 若 二 进 制 最 高 位 为1, 则 需 清 零 该 位, 否 则 形 成 的 源 形 文 件 无 法 编 译 通 过。 转 换 程 序 要 在 屏 幕 上 显 示 是(.shx) 形 文 件 中 哪 个 编 码 的 形 定 义 的 第 几 个 字 节, 以 便 将 形 成 的 源 形 文 件(.shp) 编 译 成 二 进 制 形 文 件(.shx) 后 将(.shx) 文 件 中 的 该 字 节 最 高 位 恢 复 为1;
---- 12、13 后 面 的 字 节 都 用 十 进 制 表 示, 最 好 加 上 括 号;
---- 为 了 方 便 用 文 本 编 辑 程 序 编 辑 源 形 文 件, 在 转 换 成 源 形 文 件 的 过 程 中, 每60 个 字 符 左 右 加 回 车 换 行 符。 由 于 处 理 形 定 义 也 要 花 很 长 时 间, 因 此 每 转 换 完 一 个 编 码, 在 屏 幕 上 显 示 计 数, 也 表 示 程 序 正 在 运 行。
四 改 进 汉 字 形 文 件
---- 有 了 汉 字 源 形 文 件, 就 可 以 解 决 汉 字 与 小 字 体 字 母 数 字 大 小 不 协 调 问 题。 解 决 思 路 是 使 汉 字 的 高 度 比 数 字 字 母 高, 并 且 使 汉 字 的 中 心 与 数 字 字 母 的 中 心 一 样 高。 具 体 做 法 如 下:
---- 1 . 如 果 想 使 汉 字 的 高 度 为 字 母 数 字 高 度 的1.5 倍, 用 编 码 为0 的 形 定 义 中 的 字 高 除 以1.5, 十 分 位 不 为0 则 进 位 得 到 一 整 数, 用 此 整 数 代 替 原 来 的 字 高。
---- 2 . 在 每 一 个 编 码 的 形 定 义 开 头 增 加 抬 笔 下 移 适 当 距 离 的 形 定 义, 在 形 定 义 结 束 码0 前 增 加 抬 笔 上 移 同 样 距 离 的 形 定 义。
---- 3 . 将 增 加 的 字 节 数 加 到 原 形 定 义 字 节 数 上。
---- 4 . 将 汉 字 源 形 文 件 编 译 成 二 进 制 形 文 件(.shx), 恢 复(.shx) 形 文 件 中 特 殊 码11 所 带 最 高 位 为1 的 第5 字 节。
---- 编 一 个 简 单 的 程 序 即 可 实 现 这 些 修 改, 改 进 的 汉 字 形 文 件 就 完 成 了。 由 于 篇 幅 所 限, 源 程 序 清 单 将 刊 登 在 本 刊 主 页http://www.pcworld.com.cn 的《 来 稿 照 登》 栏 目 中, 欢 迎 访 问。
---- ( 作 者 地 址: 武 汉 市64196 信 箱1 分 箱,430064; 收 稿 日 期:1998.08)
--------------------------------------------------------------------------------
中国计算机世界出版服务公司版权所有 在CAD中的快速工具可以定義的, 只是這方面我很少用. <P><A name=74096><FONT color=#000066><B>逆天唯我</B></FONT></A>先生,你好:</P>
<P>你所说的SHX文件的结构,请您详细介绍一下可以吗?比如,三个部分的各个项目都是占用几个字节,等,我也想编程实现直接读取SHX文件的功能。请多多指点!</P>
<P>如要联系请用邮箱:<A href="mailto:Turntogo@163.com" target="_blank" >Turntogo@163.com</A> </P>
<P>多谢了!!</P>
<P> </P>
<P> </P> 用express+compelit
页:
[1]