明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 9709|回复: 7

关于AUTOCAD的字体文体*.shx和形文件*.shp *.shx

[复制链接]
发表于 2003-9-19 13:39:00 | 显示全部楼层 |阅读模式
关于AutoCAD的字体文体*.shx和形文件*.shp  *.shx

有哪位大虾做过写*.SHP  和*.shx文件的程序?我连格式都不知道.
有的话不吝赐教.源代码或是相关资料都行,很急.
发表于 2003-9-28 19:55:00 | 显示全部楼层
关注,我也很想知道,特别是shx的,网上有个软件叫shx2shp,不知道是怎么实现的!
发表于 2003-9-29 08:47:00 | 显示全部楼层

这个话题太大,且真正做起来很繁琐,在这提供个学习的方向

关于SHP文件代码格式,参见ACAD帮助->自定义手册->形和形字体。这里的说明应该足够详细了。SHP文件形定义的源代码,SHX是编译后的形文件,用于ACAD加载使用。
发表于 2003-10-2 15:32:00 | 显示全部楼层
谢谢你,是的,从形定义文件可以通过编译变成形文件,但是怎么做反编译呢???给个思路好吗??
发表于 2004-1-18 00:51:00 | 显示全部楼层
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)



--------------------------------------------------------------------------------
中国计算机世界出版服务公司版权所有

评分

参与人数 1金钱 +10 贡献 +10 激情 +10 收起 理由
BDYCAD + 10 + 10 + 10 【好评】好文章

查看全部评分

发表于 2004-1-18 09:08:00 | 显示全部楼层
在CAD中的快速工具可以定義的, 只是這方面我很少用.
发表于 2005-10-20 23:15:00 | 显示全部楼层

逆天唯我先生,你好:

你所说的SHX文件的结构,请您详细介绍一下可以吗?比如,三个部分的各个项目都是占用几个字节,等,我也想编程实现直接读取SHX文件的功能。请多多指点!

如要联系请用邮箱:Turntogo@163.com

多谢了!!

 

 

发表于 2005-10-30 12:36:00 | 显示全部楼层
用express+compelit
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 00:32 , Processed in 0.175056 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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