|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
информация то favorite комментарии from all
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
Цитата:
Цитата:
Я бы до значения атрибута добирался по его тэгу, честно говоря. Хотя и тут могут быть проблемы - а если тэги повторяются?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Цитата:
Lisp язык списков, и функций работы со списками хватает практически для всех задач подобного класса. И не надо лохматить бабушку! |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
Код:
__________________
apel.fas |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Help
У меня есть список Позиция Количество 1 2 1 3 1 3 2 4 3 3 3 3 - - n 5 Как сделать чтобы у меня выбор проходил и ссумировалось количество по всем позициям, для каждой позиции отдельно. Причем как вы наверное поняли количество позиций, может быть очень большим. (требуется сумм для каждой позиции вывести.) поэтому методом перебора, то ест (cond (= 1....200 Позиция)) (setq Количество (1+ Количество)) не пройдет, так как необходимо каким-то образом менять имя переменной. Есть каке-то идеи. Как это можно реализовать? ЧТо касается предыдущего вопроса. Список действительно структурированный. Поэтому я обощелся While и простым перебором строк. Спасибо |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Что то ваш список не очень то на список похож... по крайней мере, на лисповский ![]() Ну да ладно. Предположим, что это файл структурированый, c:\pos.txt .... Вот один из вариантов, не самый удачной, но все ж... Код:
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
А если попробовать такое
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
mmax
Вот пример отрисовки через ActiveX, попробуйте это, врядли будут лишние шептанья: Код:
Alan Цитата:
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
А вообщето мне надо правильный многоугольник
окружность можно построить с помощью ENTMAKE тогда рычать не будет. А вот многоугольник так просто с помощью ENTMAKE не построить, надо сначала найти координаты вершин. В отличии от команды POLIGON там нет центра описывающей окружности хотя есть количество вершин. :? |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
mmax
Любой акадовский примитив можно вставить в текущее пространство лиспом, как известно тремя способами: 1. Через command (или лучше vl-cmdf) 2. Через entmake. 3. Методами ActiveX. У каждого способа свои полюсы и минусы. Не стоит путать КОММАНДЫ и ПРИМИТИВЫ. Нет примитива - МНОГОУГОЛЬНИК - есть примитив ПОЛИЛИНИЯ (и 3 ее разновидности). То есть нарисовать многоугольник полилинией вы можете любым вышеперечисленным способом, однако для отрисовки 2-мя последними вам придется рассчитать координаты вершин.
__________________
apel.fas |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Zouss
А вы думаете я говоря "расчитать" что имел ввиду? Это же. Но вот что Вы там у пользователя запрашивать станете, и станете ли - это уже зависит от конкретных целей.
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Но если пользоваться командами то насколько я заметил команды выполняются правильно, но выводят сообщения об ошибках причем не только в вышеперечисленном случае -- такие вещи могут напугать пользователя. А если найти координаты другим способом, то соответственно команды не понадобятся вообще. Нарисовать многоугольник с помощью (command или vl-cmdf "_poligon") а потом с помощью entget получить координаты -- это путь наименьшего сопротивления. Ну и соответственно если я не хочу видеть сообщения об инвалидных объектах, то от командного сценария придется отказаться. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Ну ладно с глюками разобрались.
Возникает новый вопрос. Как реализовать, хотябы даже на примере моего фланца, функцию вставки фланца так чтобы было видно что вставляем. У меня два мнеия на этот счет 1. Фланец рисуется гденибудь, например на невидимом слое или слоях тк типы линий разные, полученные примитивы добавляются в набор, копируются с начальной точкой вставки, удаляются вместе со слоями, далее отдаем пользователю на растерзание команду вставки. 2. все тоже самое только из примитивов создаем блок, отдаем пользователю вставку блока, Если пользователь ткнул мышью, запоминаем точку вставки, и относительно точки вставки заново отрисовываем примитивы и удаляем блок. ??????????Я правильно мыслю??????????? |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,404
|
ИМХО: Купить "САПР на базе" - там решение есть. Я не очень его понял, втупую скопировал и все.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
само красивше будет если сначала, в DCL то есть, будет картинка со схемкой фланца, где будет видно-понятно какой параметр для чего нужен
Потом создаем блок там где надо и натравливаем на него команду move - не надо ничего удалять и с перерисовкой на экране париться точно так же можно поступить и с многоугольником - сначала запрашиваем у пользователя его центр и прочее, как в команде polygon; потом entmake его с использованием (polar pt ang dist), а потом rotate на него Чтоб совсем обойтись без вызова (command... можно при запросе параметров отрисовывать многоугольник через grdraw, делая "визуальнее", но тогда у нас будет два почти одинаковых куска программы вычисляющих вершины многоугольника - один для (grdraw... другой для (entmake... в общем тут главное не перемешивать, не чередовать куски кода разного назначения - сначала спросить все у пользователя все параметры объекта, потом создать его, потом помучить с расположением - и править удобно и вероятность необъяснимых ошибок меньше |
|||
![]() |