Schöck
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP.Экспорт описания типа линии из dwg файла в lin

LISP.Экспорт описания типа линии из dwg файла в lin

Ответ
Поиск в этой теме
Непрочитано 22.10.2007, 13:59 2 | #1
LISP.Экспорт описания типа линии из dwg файла в lin
VVA
 
Инженер LISP
 
Минск
Регистрация: 11.05.2005
Сообщений: 6,788

Собственно это и делает: экспортирует описание типа линии из dwg файла в lin файл. (для чего нужно)
Код:
[Выделить все]
;;; Опубликовано Keith
;;; http://www.theswamp.org/index.php?topic=506.0
;;; http://forum.dwg.ru/showthread.php?p=1787047
;;; ver 1.4  http://forum.dwg.ru/showpost.php?p=1787057&postcount=26
;;------------------------------------------------------------
;;  Команда: LTEXTRACT
;;  Эта команда позволяет экспортировать описание
;;  типов линий из чертежей (*.dwg) в файл описания типов линий (*.lin)
;;  Код можно сохранить в файле ltextract.lsp
;;  Возможный макрос для кнопки или пункта меню:
;;  ^C^C(if (not C:LTEXTRACT)(load "LTEXTRACT"));LTEXTRACT
;;------------------------------------------------------------
 
;;;   ----------- LTExtract - Version 1.4 -----------
;;;   Copyright (C) 2002-2008  by ResourceCAD International
;;;   Author:   K.E. Blackie
;;;   
;;;   
;;;   BCI COMPUTER SOLUTIONS PROVIDES THIS PROGRAM "AS IS" AND WITH
;;;   ALL FAULTS. RESOURCECAD INTERNATIONAL SPECIFICALLY DISCLAIMS ANY
;;;   IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
;;;   USE.  RESOURCECAD INTERNATIONAL DOES NOT WARRANT THAT THE OPERATION
;;;   OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR FREE.
;;;   
;;;   
;;;   ResouceCAD International
;;;   http://www.resourcecad.com
;;;   
;;;   DESCRIPTION
;;;   LTExtract will extract all of the linetypes defined in a drawing to a seperate
;;;   linetype definition file, including complex linetypes using text and shape
;;;   modifiers.
;;;
;;;   August 17, 2002
;;;   April 23, 2008
;;;   Feb    19, 2016
;;;   ------------------------------------------------------------


(defun c:ltextract ( / dmz ltlist ltfile fn ltname ltdesc ltdef wval def)
  (setq dmz (getvar "DIMZIN"));_VVA 2019-03-05 ver 1.3
  (setvar "DIMZIN" 8);_VVA 2019-03-05 ver 1.3
  (setq ltlist (tblnext "LTYPE" t))
  (if ltlist
    (setq ltlist (entget (tblobjname "LTYPE" (cdr (assoc 2 ltlist)))))
  )
  (setq ltfile (getvar "dwgname"))
  (if (= (strcase (substr ltfile (- (strlen ltfile) 3) 4))
	 (strcase ".dwg")
      )
    (setq
      ltfile (strcat (substr ltfile 1 (- (strlen ltfile) 4)) ".lin")
    )
    (setq ltfile (strcat ltfile ".lin"))
  )
  (setq ltfile (getfiled "Save Linetype Definition As" ltfile "lin" 9))
  (if ltfile
    (progn
      (setq fn (open ltfile "w"))
      (while ltlist
	(setq ltname (strcat "*" (strcase (cdr (assoc 2 ltlist))))
	      ltdesc (cdr (assoc 3 ltlist))
	)
	(setq ltdef "A"
	      wval nil
	)
	(setq ltlist (member (assoc 49 ltlist) ltlist))
	(while (assoc 49 ltlist)
	  (setq wval (get74 ltlist))
	  (setq def (cdr (assoc 49 ltlist)))
	  (setq def (strcat "," (rtos def 2 8)))
	  (if wval
            (if (/= ltdef "A")                     ;_VVA 2019-03-10 ver 1.4
              (setq ltdef (strcat ltdef wval def)) ;_VVA 2019-03-10 ver 1.4
              (setq ltdef (strcat ltdef def wval)) ;_VVA 2019-03-10 ver 1.4
              )                                    ;_VVA 2019-03-10 ver 1.4
	    (setq ltdef (strcat ltdef def))
	  )
	  (if (> (length ltlist) 1)
	    (setq ltlist (cdr (member (assoc 49 ltlist) ltlist)))
	    (setq ltlist (list nil))
	  )
	)
	(setq ltlist (tblnext "LTYPE"))
	(if ltlist
	  (progn
	    (setq ltlist
		   (entget (tblobjname "LTYPE" (cdr (assoc 2 ltlist)))
		   )
	    )
	  )
	)
	(if (/= ltdef "A")
	  (progn
	    (write-line (strcat ltname "," ltdesc) fn)
	    (write-line ltdef fn)
	  )
	)
      )
      (close fn)
    )
  )
  (setvar "DIMZIN" dmz);_VVA 2019-03-05 ver 1.3
  (princ)
)

(defun get74 (wlist / rval)
  (setq ass74 (cdr (assoc 74 wlist)))
  (cond
    ((= ass74 0) (return nil nil nil nil))
    ((= ass74 1)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "a"
	     nil
     )
    )
    ((= ass74 2)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     (cdr (assoc 9 wlist))
	     "r"
	     nil
     )
    )
    ((= ass74 3)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     (cdr (assoc 9 wlist))
	     "a"
	     nil
     )
    )
    ((= ass74 4)
     (return (cdr (assoc 3 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "r"
	     (cdr (assoc 75 wlist))
     )
    )
    ((= ass74 5)
     (return (cdr (assoc 3 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "a"
	     (cdr (assoc 75 wlist))
     )
    )
    (T (return nil nil nil nil))
  )
  rval
)

(defun return (shx text rot shp / ttext)
  (setq test (cdr (assoc 50 wlist)))
  (if (and test rot)
    (setq rot (strcat rot "=" (angtos test 0 3))) ;_VVA 2019-03-05 ver 1.3
  )
  (setq test (cdr (assoc 46 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",S=" (rtos test 2 8)))
  )
  (setq test (cdr (assoc 44 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",X=" (rtos test 2 8)))
  )
  (setq test (cdr (assoc 45 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",Y=" (rtos test 2 8)))
  )
  (if text
    (setq ttext (strcat ",[\"" text "\"," shx "," rot "]"))
  )
  (if (and (not text) shp)
    (setq ttext (strcat ",[" (getname shp shx) "," shx "," rot "]"))
  )
  (setq rval ttext)
)

(defun getname (shape shapefile / tmp)
  (setq ss1 shape ss2 shapefile)
  (if (and
        (or (setq tmp (findfile shapefile))
          (setq tmp (findfile (strcat shapefile ".shx")))
          )
        (setq shapefile (findfile tmp))
        )
  (if (setq sfn (open shapefile "r"))
    (progn
      (repeat 23
	(read-char sfn)
      )
      (setq lownum (read-char sfn))
      (read-char sfn)
      (setq charcount (- shape lownum))
      (setq hignum (read-char sfn))
      (read-char sfn)
      (setq shpcount (read-char sfn))
      (read-char sfn)
      (repeat (* shpcount 4)
	(read-char sfn)
      )
      (setq zerocount 0)
      (while (< zerocount (* charcount 2))
	(setq this (read-char sfn))
	(if (= this 0)
	  (setq zerocount (1+ zerocount))
	)
      )
      (setq char1 (read-char sfn))
      (setq name "")
      (while (/= 0 char1)
	(setq name (strcat name (chr char1)))
	(setq char1 (read-char sfn))
      )
      (close sfn)
      name
    )
    "\"ERROR\""
  )
    "\"ERROR\""
    )
)
(princ "\nType LTEXTRACT in command line (ver 1.4)")(princ)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 10.03.2019 в 13:29. Причина: Обновлено до версии 1.4 см #27
Просмотров: 32998
 
Непрочитано 24.10.2007, 21:57
#2
dextron3

Фотограф
 
Регистрация: 01.01.2007
Алматы
Сообщений: 5,042


А в каких случаях этот лисп собственно говоря можно использовать?
И в каких отраслях?
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Непрочитано 28.12.2007, 11:48
#3
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,251


С этими линиями ничего не получилось.
См. файл.
Вложения
Тип файла: zip Типы_линий.zip (7.9 Кб, 1468 просмотров)
Makswell вне форума  
 
Непрочитано 29.12.2007, 09:05
#4
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,251


Я так понял, код не может справиться с типами линий, которые ипользуют файлы форм shx.
Как же извлечь инфу об этих файлах из типа линий?
По примеру, кода от VVA я набрал:
Код:
[Выделить все]
(entget (tblobjname "LTYPE" (cdr (assoc 2 (tblnext "LTYPE")))))
и получил:
Цитата:
Команда: (entget (tblobjname "LTYPE" (cdr (assoc 2 (tblnext "LTYPE")))))
((-1 . <Имя объекта: 7efb1c60>) (0 . "LTYPE") (330 . <Имя объекта: 7efb1d08>)
(5 . "C") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLinetypeTableRecord") (2
. "РАЗРЫВ") (70 . 0) (3 . "Линия разрыва ------/|/--------") (72 . 65) (73 . 4)
(40 . 42.3095) (49 . 40.0) (74 . 4) (75 . 130) (340 . <Имя объекта: 7efb1c68>)
(46 . 1.1547) (50 . -0.523599) (44 . 0.5) (45 . 1.1547) (49 . -1.1547) (74 . 4)
(75 . 130) (340 . <Имя объекта: 7efb1c68>) (46 . 2.0) (50 . 0.0) (44 . 0.0) (45
. 0.0) (49 . -1.1547) (74 . 4) (75 . 130) (340 . <Имя объекта: 7efb1c68>) (46 .
1.1547) (50 . -0.523599) (44 . -0.5) (45 . -1.1547) (49 . 0.0001) (74 . 0))

Команда: (entget (tblobjname "LTYPE" (cdr (assoc 2 (tblnext "LTYPE")))))
((-1 . <Имя объекта: 7efb1c78>) (0 . "LTYPE") (330 . <Имя объекта: 7efb1d08>)
(5 . "F") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLinetypeTableRecord") (2
. "ГРУНТ") (70 . 0) (3 . "Линия грунта _____/_/_/______") (72 . 65) (73 . 3)
(40 . 19.0) (49 . 15.0) (74 . 4) (75 . 130) (340 . <Имя объекта: 7efb1c68>) (46
. 2.0) (50 . -0.785398) (44 . 0.0) (45 . -1.5) (49 . 2.0) (74 . 4) (75 . 130)
(340 . <Имя объекта: 7efb1c68>) (46 . -1.7) (50 . -0.785398) (44 . 0.0) (45 .
-1.5) (49 . 2.0) (74 . 4) (75 . 130) (340 . <Имя объекта: 7efb1c68>) (46 .
-1.7) (50 . -0.785398) (44 . 0.0) (45 . -1.5))
Никакой инфы о файлах SHX я здесь не увидел...

ЗЫ Мне действительно нужно вытащить описания этих типов линий, т.к. у меня уже давно все нужные типы подгружаются программно из lin-файла, а описания этих двух типов я вынужден хранить в шаблоне файла чертежа.
Makswell вне форума  
 
Непрочитано 30.12.2007, 21:33
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,242
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Command: (setq a (entget (tblobjname "LTYPE" (cdr (assoc 2 (tblnext
"LTYPE"))))))
((-1 . <Entity name: 7ef62c60>) (0 . "LTYPE") (330 . <Entity name: 7ef62d08>)
(5 . "C") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLinetypeTableRecord") (2
. "РАЗРЫВ") (70 . 0) (3 . "Линия разрыва ------/|/--------") (72 . 65) (73 . 4)
(40 . 42.3095) (49 . 40.0) (74 . 4) (75 . 130) (340 . <Entity name: 7ef62c68>)
(46 . 1.1547) (50 . -0.523599) (44 . 0.5) (45 . 1.1547) (49 . -1.1547) (74 . 4)
(75 . 130) (340 . <Entity name: 7ef62c68>) (46 . 2.0) (50 . 0.0) (44 . 0.0) (45
. 0.0) (49 . -1.1547) (74 . 4) (75 . 130) (340 . <Entity name: 7ef62c68>) (46 .
1.1547) (50 . -0.523599) (44 . -0.5) (45 . -1.1547) (49 . 0.0001) (74 . 0))

Command: (setq b (entget (cdr (assoc 340 a)))) ((-1 . <Entity name: 7ef62c68>)
(0 . "STYLE") (330 . <Entity name: 7ef62cf0>) (5 . "D") (100 .
"AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "") (70 . 1)
(40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "ltypeshp.shx") (4 .
""))

Command: (setq fname (cdr (assoc 3 b)))
"ltypeshp.shx"
Так понятнее?
Александр Ривилис вне форума  
 
Непрочитано 15.01.2008, 14:23
#6
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,251


Разобрался.
Программа не работала с типами линий которые использовали файл форм, потому что не могла найти этот файл.
Чтобы заработало надо:
Код:
[Выделить все]
(defun getname (shape shapefile)
  (if (setq sfn (open shapefile "r"))
    (progn...
заменить на:
Код:
[Выделить все]
(defun getname (shape shapefile)
  (if (setq sfn (open (findfile shapefile) "r"))
    (progn...
Makswell вне форума  
 
Автор темы   Непрочитано 15.01.2008, 15:33
#7
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Исправил код в #1
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.03.2008, 15:56
#8
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,251


Вот новый вариант (красным отмечены изменения).
1. Я сделал локальными некоторые переменные, т.к. прога иногда вела себя не предсказуемо.
2. Также переделан алгоритм формирования строки с кодами выравнивания, т.к. с некоторыми типами линий старый алгоритм работал неправильно (например с типом линии "РАЗРЫВ" из моего поста №3).
3. А главное - введено изменение сист. переменной DIMZIN, для того, чтобы подавить замыкающие нулевые значения в десятичных числах. Во-первых получается более красивый результат. А во-вторых, я так понял, в файле с типами линий есть ограничение на длину строки, потому что некоторые типы линий с длинными строками кодов выравнивания у меня не хотели загружаться. Но после того, как были убраны замыкающие нули, они (т.е. типы линий) загрузились без проблем.
4. Ну еще внесены некоторые косметические изменения.
Код:
[Выделить все]
;;Опубликовано Keith
;; http://www.theswamp.org/index.php?topic=506.0
;;упоминалась http://dwg.ru/f/showthread.php?t=14319
					;------------------------------------------------------------
					;  Команда: LTEXTRACT
					;  Эта команда позволяет экспортировать описание
					;  типов линий из чертежей (*.dwg) в файл описания типов линий (*.lin)
					;  Код можно сохранить в файле ltextract.lsp
					;  Возможный макрос для кнопки или пункта меню:
					;  ^C^C(if (not C:LTEXTRACT)(load "LTEXTRACT"));LTEXTRACT
					;------------------------------------------------------------

;;;   ----------- LTExtract - Version 1.0 -----------
;;;   Copyright (C) 2002  by BCI Computer Solutions
;;;   Author:   K.E. Blackie
;;;   
;;;   
;;;   BCI COMPUTER SOLUTIONS PROVIDES THIS PROGRAM "AS IS" AND WITH
;;;   ALL FAULTS. BCI COMPUTER SOLUTIONS SPECIFICALLY DISCLAIMS ANY
;;;   IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR
;;;   USE.  BCI COMPUTER SOLUTIONS DOES NOT WARRANT THAT THE OPERATION
;;;   OF THE PROGRAM WILL BE UNINTERRUPTED OR ERROR FREE.
;;;   
;;;   If you need to contact BCI Computer Solutions concerning this
;;;   program you may do so by mail at the following address:
;;;   
;;;   BCI Computer Solutions
;;;   2031 SW Fallon Lane
;;;   Lake City, FL 32025 
;;;   Attn: Software Development
;;;   or
;;;   email lisper@bcinc.hypermart.net
;;;   
;;;   DESCRIPTION
;;;   LTExtract will extract all of the linetypes defined in a drawing to a seperate
;;;   linetype definition file, including complex linetypes using text and shape
;;;   modifiers.
;;;
;;;
;;;   ------------------------------------------------------------

(Defun c:ltextract
       (/ ltlist ltfile fn ltname wval ltdef def old_DIMZIN)
  (setq old_DIMZIN (getvar "DIMZIN"))
  (setvar "DIMZIN" 8)
  (setq ltlist (tblnext "LTYPE" t))
  (if ltlist
    (setq ltlist (entget (tblobjname "LTYPE" (cdr (assoc 2 ltlist)))))
  )
  (setq ltfile (getvar "dwgname"))
  (if (= (strcase (substr ltfile (- (strlen ltfile) 3) 4))
	 (strcase ".dwg")
      )
    (setq
      ltfile (strcat (substr ltfile 1 (- (strlen ltfile) 4)) ".lin")
    )
    (setq ltfile (strcat ltfile ".lin"))
  )
  (setq ltfile (getfiled "Save Linetype Definition As" ltfile "lin" 9))
  (if ltfile
    (progn
      (setq fn (open ltfile "w"))
      (while ltlist
	(setq ltname (strcat "*" (strcase (cdr (assoc 2 ltlist))))
	      ltdesc (cdr (assoc 3 ltlist))
	)
	(setq ltdef "A"
	      wval nil
	)
	(setq ltlist (member (assoc 49 ltlist) ltlist))
	(while (assoc 49 ltlist)
	  (setq def (cdr (assoc 49 ltlist)))
	  (setq def (strcat "," (rtos def 2 8)))
	  (setq ltdef (strcat ltdef def))
	  (setq ltlist (cdr (member (assoc 49 ltlist) ltlist)))
	  (setq wval (get74 ltlist))
	  (if wval
	    (setq ltdef (strcat ltdef wval))
	  )
;;;-------------старый код<начало>-------------
;;;	  (setq wval (get74 ltlist))
;;;	  (setq def (cdr (assoc 49 ltlist)))
;;;	  (setq def (strcat "," (rtos def 2 8)))
;;;	  (if wval
;;;	    (setq ltdef (strcat ltdef wval def))
;;;	    (setq ltdef (strcat ltdef def))
;;;	  )
;;;	  (if (> (length ltlist) 1)
;;;	    (setq ltlist (cdr (member (assoc 49 ltlist) ltlist)))
;;;	    (setq ltlist (list nil))
;;;	  )
;;;-------------старый код<конец>-------------
	)
	(setq ltlist (tblnext "LTYPE"))
	(if ltlist
	  (progn
	    (setq ltlist
		   (entget (tblobjname "LTYPE" (cdr (assoc 2 ltlist)))
		   )
	    )
	  )
	)
	(if (/= ltdef "A")
	  (progn
	    (write-line (strcat ltname "," ltdesc) fn)
	    (write-line ltdef fn)
	  )
	)
      )
      (close fn)
    )
  )
  (setvar "DIMZIN" old_DIMZIN)
  (princ)
)

(defun get74 (wlist / ass74 rval)
  (setq ass74 (cdr (assoc 74 wlist)))
  (cond
    ((= ass74 0) (return nil nil nil nil))
    ((= ass74 1)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "A"
	     nil
     )
    )
    ((= ass74 2)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     (cdr (assoc 9 wlist))
	     "R"
	     nil
     )
    )
    ((= ass74 3)
     (return (cdr (assoc 2 (entget (cdr (assoc 340 wlist)))))
	     (cdr (assoc 9 wlist))
	     "A"
	     nil
     )
    )
    ((= ass74 4)
     (return (cdr (assoc 3 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "R"
	     (cdr (assoc 75 wlist))
     )
    )
    ((= ass74 5)
     (return (cdr (assoc 3 (entget (cdr (assoc 340 wlist)))))
	     nil
	     "A"
	     (cdr (assoc 75 wlist))
     )
    )
    (T (return nil nil nil nil))
  )
  rval
)

(defun return (shx text rot shp / ttext test)
  (setq test (cdr (assoc 50 wlist)))
  (if (and test rot)
    (setq rot (strcat rot "=" (angtos test)))
  )
  (setq test (cdr (assoc 46 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",S=" (rtos test 2 8)))
  )
  (setq test (cdr (assoc 44 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",X=" (rtos test 2 8)))
  )
  (setq test (cdr (assoc 45 wlist)))
  (if (and test rot)
    (setq rot (strcat rot ",Y=" (rtos test 2 8)))
  )
  (if text
    (setq ttext (strcat ",[\"" text "\"," shx "," rot "]"))
  )
  (if (and (not text) shp)
    (setq ttext (strcat ",[" (getname shp shx) "," shx "," rot "]"))
  )
  (setq rval ttext)
)

(defun getname (shape	  shapefile /	      sfn	lownum
		charcount shpcount  zerocount this	name
		char1	       )
  (if (setq sfn (open (findfile shapefile) "r"))
    (progn
      (repeat 23
	(read-char sfn)
      )
      (setq lownum (read-char sfn))
      (read-char sfn)
      (setq charcount (- shape lownum))
      (setq hignum (read-char sfn))
      (read-char sfn)
      (setq shpcount (read-char sfn))
      (read-char sfn)
      (repeat (* shpcount 4)
	(read-char sfn)
      )
      (setq zerocount 0)
      (while (< zerocount (* charcount 2))
	(setq this (read-char sfn))
	(if (= this 0)
	  (setq zerocount (1+ zerocount))
	)
      )
      (setq char1 (read-char sfn))
      (setq name "")
      (while (/= 0 char1)
	(setq name (strcat name (chr char1)))
	(setq char1 (read-char sfn))
      )
      (close sfn)
      name
    )
  )
)
;(princ)
Makswell вне форума  
 
Автор темы   Непрочитано 10.06.2009, 10:40
#9
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Обновил #1. Выложена версия 1.1. Возможны различия с кодом #8 (не сверял)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 19.01.2011, 22:09
#10
InfoGIP

Автокад
 
Регистрация: 08.12.2008
Киев
Сообщений: 2


Добрый день!
Помогите пожалуйста.
Попытался воспользоваться вашей лисповой командой и получил:
1. Окошко куда сохранять появляется.
2. Пишет в командной строке:
--------------------------------------
Команда: _ltextract
; ошибка: неверный тип аргумента: stringp nil
--------------------------------------
Что делать не знаю :-(
полный Acad 2011.
InfoGIP вне форума  
 
Автор темы   Непрочитано 20.01.2011, 10:23
#11
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


1.Пробовал лисп из поста #1 и #8?
2.Если да, то выложи файл на котором появляется ошибка
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.03.2012, 09:06
#12
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


День добрый!
Пробовал лисп из поста №1. В результате получаем в lin файле такую запись:
Цитата:
*KIP2,KIP2 --o--
A,4.5,-1.72,["o",kipline,r=0,S=0.6,X=-0.3,Y=-0.5],-1.72
*KIP1,KIP1 ---\---
A,1.7,-0.88,1.7,-0.88,1.7,-0.44,["\",kipline,r=0,S=0.6,X=-4.6,Y=-0.6],-0.44
*KIP3,Kip3 -//-
A,["/ /",kipline,r=0,S=0.5,X=-0.6,Y=-0.75],6,["/ /",kipline,r=0,S=0.5,X=-0.6,Y=-0.75],4
Насколько я понимаю, должен быть файл kipline.shх в котором должны быть следующие формы "o", "\", "/ /".
Но такого файла у меня нет. А линии отображаются верно. Почему так происходит?
99xt1 вне форума  
 
Автор темы   Непрочитано 12.03.2012, 09:16
1 | #13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от 99xt1 Посмотреть сообщение
А линии отображаются верно. Почему так происходит?
Судя по описанию, kipline - это текстовый стиль. Ниже пример из файла acadiso.lin. Красным выделено использование форм (shape), для которых нужно наличие shx файла, синим - текстовых строк. Форма вызывается по имени (в примере BAT). Обрати внимание на кавычки "".
Цитата:
*изоляция,Изоляция SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS
A,.00254,-2.54,[BAT,ltypeshp.shx,x=-2.54,s=2.54],-5.08,[BAT,ltypeshp.shx,r=180,x=2.54,s=2.54],-2.54
*горячая_вода,Горячее водоснабжение ---- HW ---- HW ---- HW ----
A,12.7,-5.08,["HW",STANDARD,S=2.54,R=0.0,X=-2.54,Y=-1.27],-5.08
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.03.2012, 11:37
#14
99xt1

нефтепереработка
 
Регистрация: 17.11.2009
Мозырь, Республика Беларусь
Сообщений: 77


Всё ясно. Разобрался. Спасибо
99xt1 вне форума  
 
Непрочитано 25.02.2014, 10:50 Образцы файлов на котрых программа не работает
#15
ryabinov


 
Регистрация: 30.11.2012
Сообщений: 2


Уважаемый VVA, вот файлы на которых программа не работает. lin файл создается, но там где используется файл форм, не корректно прописываются названия форм. Похоже не понимает dos кодировку.
Вложения
Тип файла: zip IStyles.zip (125.0 Кб, 118 просмотров)
ryabinov вне форума  
 
Автор темы   Непрочитано 27.02.2014, 14:44
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Сделал purge и в настройках текстовых стилей снял галку "использовать большой шрифт"
Вложения
Тип файла: zip lStyles2.zip (6.5 Кб, 158 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.02.2014, 14:53
#17
ryabinov


 
Регистрация: 30.11.2012
Сообщений: 2


Попробуйте загрузить какой-нибудь тип линии из этого файла. Автокад ругается практически на все строки. Много таких вот структур [,dgnlstyle.shx ... , то есть указан файл форм, а имя формы пропущено.
ryabinov вне форума  
 
Непрочитано 28.03.2014, 12:31
#18
Baban


 
Регистрация: 28.03.2014
Сообщений: 1


У меня такая же ошибка как и в #10. Пробовал использовать оба кода из #1 и из #8.
Файл из которого хотел извлечь линии приложен. У меня автокад 2014.
Вложения
Тип файла: dwg
DWG 2007
Условные обозначения планы.dwg (221.7 Кб, 3914 просмотров)
Baban вне форума  
 
Автор темы   Непрочитано 19.02.2016, 17:07
1 | #19
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Baban Посмотреть сообщение
У меня такая же ошибка как и в #10. Пробовал использовать оба кода из #1 и из #8.
Файл из которого хотел извлечь линии приложен. У меня автокад 2014.
Добавил в #1 проверку на отсутствие shx файлов. Если shx файл не найден, то будет выведена строка "ERROR"
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.09.2017, 15:29
#20
mindchamber


 
Регистрация: 29.07.2017
Сообщений: 129


Добрый день!
В первую очередь хочу сказать спасибо VVA за его скрипты, столько раз выручали, что уже не сосчитать. Что же касается этого лиспа - он экспортирует абсолютно все линии из dwg файла, а как можно экспортировать один единственный тип выбранного объекта?

Очень странно, что столько полезный инструмент не присутствует в "голом" автокаде.

Спасибо
mindchamber вне форума  
 
Автор темы   Непрочитано 28.09.2017, 16:15
#21
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


mindchamber, А какая проблема найти в текстовом файле поиском нужное описание по имени и скопировать в новый файл?
Или удалить все кроме нужного
?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 02.10.2017, 21:35
#22
mindchamber


 
Регистрация: 29.07.2017
Сообщений: 129


Цитата:
Сообщение от VVA Посмотреть сообщение
mindchamber, А какая проблема найти в текстовом файле поиском нужное описание по имени и скопировать в новый файл?
Или удалить все кроме нужного
?
Бесспорно тут вы правы. Но когда файл обходит пару тройку аутсорс инженеров, то файл довольно сильно "распухает", что делает затруднительным поиск соответствующего типа линии. Как бы то ни было ни у кого такой проблемы не возникло, так что не утруждайте себя ответом на мое сообщение. Благодарю.
mindchamber вне форума  
 
Автор темы   Непрочитано 03.10.2017, 13:58
#23
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от mindchamber Посмотреть сообщение
файл довольно сильно "распухает",
Есть очень большое подозрение, что дело в "словарях DGN"
Читать 1-й пост Помогите уменьшить размер файла DWG и FАQ Как уменьшить объем файла dwg
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.02.2019, 15:01
#24
maiklbua


 
Регистрация: 28.02.2019
Сообщений: 4


Доброго всем дня.
Не могу сам разрешить проблему.
С помощью лиспа LTEXTRACT(экспорт линий в Lin) создаю файл с типами линий.

описание из файла .Lin
*ЖЕЛЗНЫЕ ДОРОГИ(ОСЕВАЯ),Желзные дороги(осевая)
A,0.00000000,-12.00000000,[TRACK1,ltypeshp.shx,r=0d0'0",S=2.00000000,X=0.00000000,Y=0.00000000],0.00000000
*ЖЕЛЗНЫЕ ДОРОГИ УЗКОКОЛЕЙНЫЕ (ОСЕВАЯ),Желзные дороги узкоколейные (осевая)
A,0.00000000,-6.00000000,[TRACK1,ltypeshp.shx,r=0d0'0",S=1.50000000,X=0.00000000,Y=0.00000000],-6.00000000,[TRACK1,ltypeshp.shx,r=0d0'0",S=1.00000000,X=0.00000000,Y=0.00000000],0.00000000
*ТРАМВАЙНЫЕ ЛИНИИ,Трамвайные линии
A,0.00000000,-6.00000000,[TRACK1,ltypeshp.shx,r=0d0'0",S=2.00000000,X=0.00000000,Y=0.00000000],-6.00000000,[TRACK1,ltypeshp.shx,r=0d0'0",S=1.50000000,X=0.00000000,Y=0.00000000],0.00000000


Далее пытаюсь его загрузить в чистый чертеж и получаю ниже следующий ответ.
---------------------------
AutoCAD
---------------------------

Некорректное определение типа линий ЖЕЛЗНЫЕ ДОРОГИ(ОСЕВАЯ) в строке 2 файла C:\Users\fox\Desktop\Почта\Чертеж3.lin:
В выражении должны присутствовать R, A, U, S, X или Y
---------------------------
ОК
---------------------------

Нажмите на изображение для увеличения
Название: Screenshot_3.jpg
Просмотров: 14
Размер:	70.3 Кб
ID:	211460
maiklbua вне форума  
 
Непрочитано 28.02.2019, 15:10
#25
kacugu

начинающий инженер-гидротехник
 
Регистрация: 18.04.2010
Санкт-Петербург
Сообщений: 691


Замените везде 0d0'0'' на 0
kacugu вне форума  
 
Непрочитано 28.02.2019, 15:20
#26
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,242
Отправить сообщение для Александр Ривилис с помощью Skype™


VVA,
Документация подсказывает, что углы должны быть в градусах (по умолчанию - иначе нужен суффикс d, r или g). Соответственно вместо
Код:
должно быть
Код:
[Выделить все]
 (angtos test 0) ;; Возможно следует сразу задать сразу и точность: (angtos test 0 3)
Кроме того в силу ограничения длины строки в 80 символов настоятельно рекомендуется установить DIMZIN в 8 (или 12) для отбрасывания замыкающих (и ведущих) нулей.

Последний раз редактировалось Александр Ривилис, 28.02.2019 в 15:33.
Александр Ривилис вне форума  
 
Непрочитано 04.03.2019, 15:28
#27
maiklbua


 
Регистрация: 28.02.2019
Сообщений: 4


огромное спасибо.
с кодами к Лиспам мне пока еще рано. Я в них ни чего не понимаю.

Последний раз редактировалось maiklbua, 04.03.2019 в 15:46.
maiklbua вне форума  
 
Автор темы   Непрочитано 05.03.2019, 09:30
#28
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Обновил #1 до версии 1.3
maiklbua, можешь попробовть
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 07.03.2019, 14:21
#29
maiklbua


 
Регистрация: 28.02.2019
Сообщений: 4


Доброго дня Лисп попробовал обновленный 1.3. файл Lin создался без 0d0'0' и лишних нулей. но при загрузке в чистый чертеж автокад ругается и не все линии ест.
Нажмите на изображение для увеличения
Название: Screenshot_4.jpg
Просмотров: 15
Размер:	168.8 Кб
ID:	211697

Типы Линий.dwg
maiklbua вне форума  
 
Автор темы   Непрочитано 10.03.2019, 13:32
#30
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,788
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от maiklbua Посмотреть сообщение
но при загрузке в чистый чертеж автокад ругается и не все линии ест.
Обновил до версии 1.4
При загрузке в чистый чертеж по прежнему будет ругаться, т.к. в описании некоторых типов линий используется стиль Бм-431
Его предварительно нужно создать
Цитата:
*ВОДОПРОВОД НАЗЕМНЫЙ,Водопровод наземный
A,20,-2,["В",Бм-431,r=0,S=1,X=-1.9,Y=-0.875],20
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 12.03.2019, 09:24
#31
maiklbua


 
Регистрация: 28.02.2019
Сообщений: 4


все получилось,
Безмерно благодарен за ваш труд.
maiklbua вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Готовые программы > LISP.Экспорт описания типа линии из dwg файла в lin

Расчет зданий и сооружений в сейсмоопасных районах
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
lisp : проверка наличия типа линии в файле Кулик Алексей aka kpblc LISP 4 21.06.2005 08:04
ГОСТ на ванты и оттяжки ??? зщцук? Поиск литературы, чертежей, моделей и прочих материалов 1 17.05.2005 06:53
Загрузка типа линии из макроса Кулик Алексей aka kpblc Программирование 4 24.01.2005 14:57
Размер файла dwg alex-alex Прочее. Архитектура и строительство 5 10.09.2004 00:28