Анкерные системы Schöck Dorn
dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

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

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

VVA вне форума Вставить имя

Собственно это и делает: экспортирует описание типа линии из dwg файла в lin файл. (для чего нужно)
Код:
[Выделить все]
;;Опубликовано 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.2 -----------
;;;   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 ()
  (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
	    (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)
    )
  )
  (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)))
  )
  (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.2)")(princ)
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 19.02.2016 в 17:06. Причина: Обновлено до версии 1.2
Просмотров: 21387
 
Непрочитано 24.10.2007, 21:57
#2
dextron3

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


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

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


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

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


Я так понял, код не может справиться с типами линий, которые ипользуют файлы форм 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,154
Отправить сообщение для Александр Ривилис с помощью ICQ Отправить сообщение для Александр Ривилис с помощью 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,247


Разобрался.
Программа не работала с типами линий которые использовали файл форм, потому что не могла найти этот файл.
Чтобы заработало надо:
Код:
[Выделить все]
(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,554
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для VVA с помощью Skype™


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

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


Вот новый вариант (красным отмечены изменения).
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,554
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для 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,554
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для 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,554
Отправить сообщение для VVA с помощью ICQ Отправить сообщение для 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 Кб, 93 просмотров)
ryabinov вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 27.02.2014, 14:44
#16
VVA

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


Сделал purge и в настройках текстовых стилей снял галку "использовать большой шрифт"
Вложения
Тип файла: zip lStyles2.zip (6.5 Кб, 124 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
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 Кб, 3860 просмотров)
Baban вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Автор темы   Непрочитано 19.02.2016, 17:07
1 | #19
VVA

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


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


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


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

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

Спасибо
mindchamber вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум 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

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||