乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 317|回复: 13

[编程交流] 地理地图图像组代码 310

[复制链接]

3

主题

23

帖子

8

银币

初来乍到

Rank: 1

铜币
29
发表于 2021-7-7 18:46:57 | 显示全部楼层 |阅读模式

xfj1vmpseis.png

xfj1vmpseis.png

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-7 22:25:17 | 显示全部楼层
看起来像像素信息,如果你能打开调试器,比如说jpg应该看到类似的十六进制代码。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-7 22:26:26 | 显示全部楼层
看起来像像素信息,如果你能打开调试器,比如说jpg应该会看到类似的十六进制代码
看看dcl中的矢量图像,它们需要类似样式的数据。
回复

使用道具 举报

3

主题

23

帖子

8

银币

初来乍到

Rank: 1

铜币
29
发表于 2021-7-8 09:46:12 | 显示全部楼层
由于BIGAL,但是我希望多一点
回复

使用道具 举报

9

主题

383

帖子

82

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
355
发表于 2021-7-8 14:10:48 | 显示全部楼层
实际上它不是RGB,而是RGBA,所以将这个巨大的字符串分成4字节的块,然后将每个十六进制字节转换成十进制
回复

使用道具 举报

3

主题

23

帖子

8

银币

初来乍到

Rank: 1

铜币
29
发表于 2021-7-13 17:04:28 | 显示全部楼层

谢谢Vovka。我已经看到你的回答
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-14 03:44:25 | 显示全部楼层
我看了一下这个,它似乎可以进行rgb转换。
  1. ;; Base to Decimal  -  Lee Mac
  2. ;; Converts an number in an arbitrary base to decimal.
  3. ;; n - [str] string representing number to convert
  4. ;; b - [int] base of input string
  5. ;; Returns: [int] Decimal representation of supplied number
  6. (defun LM:base->dec ( n b / l )
  7.     (if (= 1 (setq l (strlen n)))
  8.         (- (ascii n) (if (dec (substr n 1 (1- l)) b)) (LM:base->dec (substr n l) b))
  9.     )
  10. )
  11. (setq str "F0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFE5DCCAFFFFFFFFFFFFFFFFFFFFFFFFFFE5DCCAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEAFFF0EEEA")
  12. (defun c:test ()
  13. (setq x 1)
  14. (setq lst2 '())
  15. (repeat (/ (strlen str) 8)
  16. (setq lst '())
  17. (repeat 4
  18. (setq hex (strcat (substr str x 1)(substr str (setq x (+ x 1)) 1) ))
  19. (setq num (LM:base->dec hex 16))
  20. (setq lst (cons num lst))
  21. (setq x (+ x 1))
  22. )
  23. (setq lst2 (cons (reverse lst) lst2))
  24. )
  25. (princ lst2)
  26. (princ)
  27. )

回复

使用道具 举报

3

主题

23

帖子

8

银币

初来乍到

Rank: 1

铜币
29
发表于 2021-7-14 09:29:21 | 显示全部楼层
Bigal,
您的代码在理论上是可行的,但是由于有这么多310代码,字符串长度变得惊人。我相信有几十万根绳子。如果有人想提高自己,我会把我现在的代码贴在下面。(我的“Hex2RGBA”功能最需要改进)
d2010,
我相信Geomap图像在2014年才发布,所以我不认为我可以发布旧版本。任何可以使用GEO (GEOGRAPHICLOCATION)命令并显示“地理位置”上下文功能区的人都可以创建地理地图图像。
当前代码:
  1. (defun LM:base->dec ( n b / l )
  2.     (if (= 1 (setq l (strlen n)))
  3.         (- (ascii n) (if (
  4.         (+ (* b (LM:base->dec (substr n 1 (1- l)) b)) (LM:base->dec (substr n l) b))
  5.     )
  6. )
  7. ;; hex - string, of hexadecimal values (no spaces) to convert to RGBA.
  8. ;; returns - list, of RGBA values as ((R G B A) (R G B A) ...) or nil if errors detected.
  9. (defun Hex2RGBA (hex / pos len errMsg rgba return)
  10.   ;; Prep
  11.   (setq pos -1 len (strlen hex))
  12.   ;; Initial Check(s)
  13.   (setq errMsg
  14.     (cond
  15.       ((not (zerop (rem len 8))) "\nHex2RGBA error; Invalid hex string length.")
  16.     );cond
  17.   );setq
  18.   (if errMsg
  19.     (prompt errMsg)
  20.   ;else
  21.     (repeat (/ len 8)
  22.       (setq rgba '())
  23.       (setq return
  24.         (cons
  25.           (reverse
  26.             (repeat 4
  27.               (setq rgba
  28.                 (cons
  29.                   (LM:base->dec
  30.                     (substr hex (setq pos (+ 2 pos)) 2)
  31.                     16
  32.                   );LM
  33.                   rgba
  34.                 );cons
  35.               );setq
  36.             );repeat
  37.           );reverse
  38.           return
  39.         );cons
  40.       );setq
  41.     );repeat
  42.   );if
  43.   (reverse return)
  44. );defun
  45. (defun Get310s (e / )
  46.   (mapcar
  47.     'cdr
  48.     (vl-remove-if
  49.       '(lambda (x) (/= 310 (car x)))
  50.       (entget e)
  51.     );vl-remove-if
  52.   );mapcar
  53. );defun
  54. (defun c:GEOCOPY ( / gmap gc310 hex rgba)
  55.   (prompt "\nSelect Geomap Image: ")
  56.   (if (and (setq gmap (car (nentsel "\nSelect Geomap Image: ")))
  57.            (eq "GEOMAPIMAGE" (cdr (assoc 0 (entget gmap)))))
  58.     (progn
  59.       (setq gc310 (Get310s gmap))
  60.       (setq hex (apply 'strcat gc310))
  61.       (setq rgba (hex2rgba hex))
  62.       ;; Do stuff with RGBA
  63.       (prompt "\nGEOCOPY Complete.")
  64.     );progn
  65.   );if
  66.   (princ)
  67. );defun

最佳,
~DD
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2021-7-14 20:20:08 | 显示全部楼层
使用地图车可能会加快读取4个字节的部分,但不要问我怎么做。
您可能会碰到lisp字符串长度??
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2021-7-15 02:23:35 | 显示全部楼层
不是创建一个很长的字符串,而是分别转换每个gc 310部分。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-1-31 15:47 , Processed in 0.279557 second(s), 75 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表