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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проверка существования текстового стиля.

Проверка существования текстового стиля.

Ответ
Поиск в этой теме
Непрочитано 03.03.2010, 18:26 #1
Проверка существования текстового стиля.
acidburst
 
Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7

Здравствуйте. Похоже форум приобрел еще одного почемучку :-)

Простое условие
Код:
[Выделить все]
(if (not (tblobjname "_.style" "XXXX"))
  (command "_.-style" "XXXX" "romans.shx" "2.5" "1" "0" "N" "N" "N"))
При выполнении акад соглашается с тем, что стиль существует, но все-же создает новый стиль с такимже именем и делает его текущим.
Мне кажется не логично...
Либо я перечитал полещука либо лыжи не едут. Подскажите пожалуйста.
Просмотров: 5728
 
Непрочитано 03.03.2010, 22:41
#2
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Я думаю просто обычная невнимательность
Из справки
Цитата:
(tblobjname table-name symbol)

Arguments

table-name

A string that identifies the symbol table to be searched. The argument is not case-sensitive. Valid table-name values are "LAYER", "LTYPE", "VIEW", "STYLE", "BLOCK", "UCS", "APPID", "DIMSTYLE", and "VPORT".
...
Среди символьных таблиц есть таблица "STYLE", но нет таблицы "_.style". Как говорится, найдите 2 отличия.
И если уж используешь универсальную нотацию в command, то используй ее доконца
Код:
[Выделить все]
(command "_.-style" "XXXX" "romans.shx" "2.5" "1" "0" "_N" "_N" "_N")
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 04.03.2010, 08:02
#3
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


Прошу прощения, просто в книжке В.Света было написано

"При любой степени русификации AutoCAD его ядро остается английским. Если перед английским именем комманды поставить знак подчеркивания, а затем точку (_.), то комманда будет извлечена из самого ядра и сработает правильно в любом случае."

Да, невнимательность, но невнимательность была при чтении, т.к. это было в описании создания кнопок :-(
В приведенных примерах по лиспу в той же книге, используется только знак подчеркивания.

Спасибо.

Может быть подскажете разницу в создании тесчтового стиля посрездством vla-add, entmakex, command? принципиальную разницу.

Последний раз редактировалось acidburst, 04.03.2010 в 08:13. Причина: Добавил вопрос.
acidburst вне форума  
 
Непрочитано 04.03.2010, 08:14
#4
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


acidburst, ты немного путаешь команды и их опции, мне кажется...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.03.2010, 08:26
#5
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


Не отрицаю и не исключаю.
3 дня с нуля читать про лисп в перерывах между работой, а потом с первого раза свести все вместе обычно не реально.
Поэтому и написал на форуме, ибо путаюсь в трех соснах.
acidburst вне форума  
 
Непрочитано 04.03.2010, 08:56
#6
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Скажу честно - искать лениво, поэтому просто на сайте у себя опубликовал: http://autolisp.ru/2010/03/04/localization/
На форуме все это было, и не раз. И, по-моему, с более подробным разбором.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.03.2010, 09:12
#7
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


Я вот тоже обчитавшись ставлю (_.), в том числе и почитав вашего ресурса.
Сейчас попробовал
Код:
[Выделить все]
(if (not (tblobjname "STYLE" "XXXX"))
изменить на
Код:
[Выделить все]
(if (not (tblobjname "_STYLE" "XXXX"))
и почему-то не работает, хотя это явно опция для комманды tblobjname
Кулик Алексей aka kpblc,зная о том что вы полубог в lispe, даже неудобно вас отвлекать такими пустяками.
acidburst вне форума  
 
Непрочитано 04.03.2010, 09:16
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Все эти точки-подчеркивания при написании LISP-кода применяются только в аргументах функций command и vl-cmdf.
Do$ вне форума  
 
Автор темы   Непрочитано 04.03.2010, 09:18
#9
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


другого пока не умею, уж извините.

VVA, а что у вас за справка такая? Я нажимая контрол+ф1 получаю:
Цитата:
Returns the entity name of a specified symbol table entry
(tblobjname table-name symbol)
Arguments
table-name
A string that identifies the symbol table to be searched. The argument is not case-sensitive.
symbol
A string identifying the symbol to be searched for.
Return Values
The entity name of the symbol table entry, if found.
The entity name returned by tblobjname can be used in entget and entmod operations.
Examples
The following command searches for the entity name of the block entry “ESC-01”:
Command: (tblobjname "block" "ESC-01")
<Entity name: 1dca368>

Последний раз редактировалось acidburst, 04.03.2010 в 09:25. Причина: добавил вопрос
acidburst вне форума  
 
Непрочитано 04.03.2010, 09:27
#10
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


Ну почему же, я вижу, что уже освоены функции tblobjname, not, if
Do$ вне форума  
 
Автор темы   Непрочитано 04.03.2010, 09:30
#11
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


not, if, также как + - = из курсов программирования на паскале.
tblobjname не освоен, потому как есть вопрос по испольхованию "STYLE"
acidburst вне форума  
 
Непрочитано 04.03.2010, 09:55
#12
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


tblobjname - не команда, а функция лиспа. И работает она с таблицами файла dwg (грубо говоря, можно считать, что dwg есть база данных). Имена таблиц стандартны и не локализуются.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 04.03.2010, 10:19
#13
acidburst

Проектант :-D
 
Регистрация: 03.03.2010
Сообщений: 7


Извиняйте (. Впредь постараюсь побольше читать поменьше спрашивать.
acidburst вне форума  
 
Непрочитано 04.03.2010, 12:47
#14
Александр Ривилис

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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Все эти точки-подчеркивания при написании LISP-кода применяются только в аргументах функций command и vl-cmdf.
Еще (ssget) и (osnap)
Александр Ривилис вне форума  
 
Непрочитано 04.03.2010, 13:33
#15
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


Ну, про опции (ssget) можно ооочень долго распространяться
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.03.2010, 13:52
#16
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


Цитата:
Сообщение от acidburst Посмотреть сообщение
VVA, а что у вас за справка такая?
Названия символьных таблиц table-name даны в описании функции tblnext
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 05.03.2010, 23:14
#17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Блн, сколько можно такой пофигизм наблюдать... Зачем ипользовать '(command ...)' А потом в лучшем случае подавлять вывод в кс с помощью 'cmdecho нельзя что ли etnmake использовать или, например, АктивИкс, на худой конец
Код:
[Выделить все]
(defun cdx-AddLayer (LayerName LayerColor LayerLType / LyrObj)
;;; Добавляет в текущий документ слой с заданным именем
;;; (cdx-AddLayer "Layer 4" 4 *cdl_lt_cen*)
;;; (cdx-AddLayer "Layer 6" 6 *cdl_lt_hid*)
;;; (cdx-AddLayer "Layer 42" 42 nil)
  (if (member LayerName (cdx-LayerNameList))
	(setq LyrObj (vla-Item (vla-get-Layers *cdl_actvdoc*) LayerName))
	(setq LyrObj (vla-Add  (vla-get-Layers *cdl_actvdoc*) LayerName))
  )
  (vla-put-Color LyrObj LayerColor)
  (if
    (and
      LayerLType
      (or
        (member LayerLType (cdx-LineTypeNameList))
        (not (vl-catch-all-apply 'vla-Load (list (vla-get-LineTypes *cdl_actvdoc*) LayerLType (findfile *cdl_lt_file*))))
      )
    )
    (vla-put-LineType LyrObj LayerLType)
  )
  LyrObj
)
думаю смысл должен быть понятен
зы И вообще есть такие, кто справку хотя б на 80, не, на 75% прочитал...
gomer вне форума  
 
Непрочитано 05.03.2010, 23:57
#18
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406


gomer, а ты читал, что надо создавать текстовый стиль, а не слой?
И, если разбирать твой код - то там тоже не все гладко. Слой будет печататься или нет? А если печататься, то с каким стилем? А слой будет блокироваться или нет? А как насчет заморозки? И заморозки в новых ВЭ? А что будет, если в файле не загружен тип линии? А можно ли обработать нетекущий файл?
Если ты публикуешь кусок своей библиотеки, то либо предупреждай о неработоспособности кода, либо предоставляй все полностью. В том числе и назначения глобальных переменных.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.03.2010, 00:36
#19
Александр Ривилис

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


Цитата:
Сообщение от gomer Посмотреть сообщение
нельзя что ли etnmake использовать или, например, АктивИкс, на худой конец
Ты тоже через три дня после начала изучения AutoLisp начал пользоваться (entmake) и ActiveX? Ну-ну...
Александр Ривилис вне форума  
 
Непрочитано 06.03.2010, 14:48
#20
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


-> kpblc:
это даже не лисп, а алгоритм, но суть та же (кстати исходный алгоритм с tblobjname часто применяется и для слоев):
Если нет нобходимого стиля или слоя, он создается автоматически с минимальными настройками, по возможности подгружаются шрифт или тип линии соответственно.
По поводу заморозки слоев : зачем слой создавать и сразу его замораживать
->Александр Ривилис:
К сожалению нет, каждую функцию по-отдельности "обсасывал", но потом оказалось, что их не так уж много...
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проверка существования текстового стиля.



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Замена текстового стиля VVA Готовые программы 322 28.05.2025 09:59
Замена текстого стиля Shoorup Программирование 43 19.05.2015 09:22
Смена текстового стиля в СПДС и Project Studio @$K&t[163RUS] ПО от CSoft 2 08.02.2010 09:57
Как Извлечь из строки числа Kostinok Программирование 7 12.08.2008 08:00
Настройка "Стандартного" текстового стиля. Кулик Алексей aka kpblc AutoCAD 6 23.10.2003 22:49