lido Posted January 20, 2021 Share Posted January 20, 2021 Hello everyone! After loading a SHX shape file with vla-loadshapefile function, I would like to know the names of shapes available (defined) in the file. Does anyone know how to proceed? Thanks in advance. Quote Link to comment Share on other sites More sharing options...
BIGAL Posted January 20, 2021 Share Posted January 20, 2021 If you just want to know not actually use in a program search SHX to SHP, shp are text files Quote Link to comment Share on other sites More sharing options...
lido Posted January 21, 2021 Author Share Posted January 21, 2021 @BIGAL Thank you for your answer. The SHX file is at the client. I do not have acces to it! My program should read the data in the SHX file (defined shape names) and integrate the shape chosen by the user into the definition of a complex line. Quote Link to comment Share on other sites More sharing options...
lido Posted January 22, 2021 Author Share Posted January 22, 2021 In the absence of a better solution, please accept this one which I propose. Any comments are welcome. ;;Read shape names defined inside a SHX file ;;lido 22.01.2121 (defun shpnames (SHX_file / $line EXE_file INN_file OPN_file OUT_file SHP_list TMP_file) (cond ( (not (setq INN_file (findfile SHX_file))) (alert (strcat SHX_file " file not found."))) ( (not (setq EXE_file (findfile "dumpshx.exe"))) (alert "dumpshx.exe file not found.")) ( T (setq OUT_file (vl-filename-mktemp (strcat (vl-filename-base SHX_file) ".SHP"))) (if (> (startapp (strcat EXE_file " -o " OUT_file " " INN_file)) 2) (progn (while (< (vl-file-size OUT_file) 1)) ;;Delay, do not delete! (setq OPN_file (open OUT_file "r")) (while (setq $line (read-line OPN_file)) (if (= (substr $line 1 1) "*") (setq SHP_list (cons (substr $line (- (strlen $line) (vl-position 44 (reverse (vl-string->list $line))) -1)) SHP_list)) ) ) (close OPN_file) (if (setq TMP_file (findfile (strcat (vl-filename-directory OUT_file) "\\" (vl-filename-base OUT_file) ".TMP"))) (vl-file-delete TMP_file)) ;;Dumpshx.exe Version 1.3 make this file (while (findfile OUT_file) (vl-file-delete OUT_file)) ;;An other delay, do not delete! ) ) ) ) (vl-sort SHP_list (function (lambda (a b) (< a b)))) ) ;;shpnames (vl-load-com) 1 Quote Link to comment Share on other sites More sharing options...
tombu Posted January 22, 2021 Share Posted January 22, 2021 37 minutes ago, lido said: In the absence of a better solution, please accept this one which I propose. Any comments are welcome. Handy function. Added to my collection. Quote Link to comment Share on other sites More sharing options...
BIGAL Posted January 22, 2021 Share Posted January 22, 2021 Glad you found dumpshx.exe. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.