Miranda
Участник форумов
Сейчас отсутствует
|
Я не работала в ZWCADе, но 2 года назад по просьбе одной организации, которая его приобрела, переделывала свои программы, написанные под ACAD на LISP, для ZWCAD. Вот, что я заметила: 1. Не работает функция (vl-symbol-name '<символ>), выводящая имя символа в форме текстовой строки. Например, при вводе (vl-symbol-name 'abcd) получается bad argument type, вместо "ABCD"
2. Не удаляется пустая директория при помощи вызова команды DOS: (vl-cmdf "_.SHELL" "RMDIR c:\\ZWC\\AAA") Не нашла, какой оператор LISP можно использовать для удаления директории
3. В перечне функций LISP (в HELPе) отсутствуют: функция вычисления площади внутри кривой: (vlax-curve-getArea <кривая>)
функция вычисления длины сегмента кривой от начальной точки до точки с заданным значением параметра: (vlax-curve-getDistAtParam <кривая> <параметр>)
и функция вычисления длины кривой между начальной точкой и заданной точкой на кривой: (vlax-curve-getDistAtPoint <кривая> <точка>)
А это очень жаль, я их использую. Пробовала их запускать - действительно, не работают.
4. Не всегда правильно работают функции: (vlax-curve-getEndParam <кривая>) (vlax-curve-getPointAtParam <кривая> <параметр>)
Для анализа работы этих функций я написала небольшую команду razm_pr.lsp, которая расставляет вдоль кривой (LINE, LWPOLYLINE, SPLINE, ARC, CIRCLE, ELLIPSE) маленькие кружочки через 0.5 м и записывает результаты в файл "proba_razmetka.txt" в ту же директорию, в которой находится и файл рисунка. Результаты работы этой команды представлены в файлах proba_acad.dwg (при запуске команды в ACAD 2006) и proba_zwcad.dwg (при запуске команды в ZWCAD 2009 demo). Получившиеся в результате обработки в ACAD и ZWCAD текстовые файлы я свела в один файл ACAD-ZWCAD.doc для удобства сравнения результатов. Туда же я добавила некоторые комментарии. Если кому-нибудь интересно, то посмотрите этот материал в прикрепленном архиве. Откройте файл proba_zwcad.dwg, подгрузите текст razm_pr.lsp, нарисуйте какую-нибудь линию, сплайн или что-нибудь еще, введите в командной строке команду razm_pr и нажмите Enter. 5. Ошибочно формирует наборы типа:
(setq nabpk (ssget "_X" (list (cons 8 "PICET")(cons 0 "LWPOLYLINE") (cons 90 2)(cons 70 1)(cons 42 1))))
(setq nabpk (ssget "_X" (list (cons 8 "PICET")(cons 0 "LWPOLYLINE")(cons 90 2)(cons 70 1) (cons -4 " (cons 42 1)(cons 42 (- 1)) (cons -4 "OR>"))))
Для иллюстрации этого момента я написала небольшой текст NABPK.lsp с комментариями. К этому тесту прилагается файл NABPK.DWG. Откройте, пожалуйста, этот файл и подгрузите в него NABPK.lsp. Тогда будет понятнее, о чем я говорю. Почитайте сам текст NABPK.lsp, там есть пояснения.
6. Информация, выводимая в текстовое окно, всегда выводится в одну строку. Это не очень удобно. Например, когда надо посмотреть характеристику примитива (функция (entget <примитив>)), которая содержит много сведений, строка получается очень длинная.
7. Порядок и состав DXF-кодов в характеристиках примитивов в ZWCADе, вызываемых функцией (entget <примитив>)), отличаются от получаемых этой же функцией в ACADе. Например, для окружности , нарисованной цветом BYLAYER, типом линии BYLAYER c весом BYLAYER, масштабом 1.000, в ZWCADе будет список из DXF-кодов: -1, 0, 5, 67, 8, 62, 6, 370, 48, 60, 39, 210, 10, 40 в ACADе: -1, 0, 330, 5, 100, 67, 410, 8, 100, 10, 40, 210
Это создает неудобство для программиста при адаптации программ, написанных под ACAD, под ZWCAD. 8. Не нашла, где можно узнать перечень отличий LISP ZWCADа от LISP ACADа.
9. Иногда не работает функция UNDO, возможно, тогда, когда произошел выход по ошибке, но точно я этот момент не отследила.
10. Иногда не работает повтор предыдущей команды при нажатии правой кнопки мыши, или клавиши "стрелка вверх", или клавиши Enter. Тоже, возможно, такой сбой происходит после выхода по ошибке, но тоже я этот момент точно не отследила.
Повторюсь, что это было 2 года назад. Может быть, сейчас ZWCAD доработан, и дела обстоят по-другому. Мне было бы интересно, если бы кто-нибудь проверил мои материалы в новых версиях ZWCAD и написал о результатах.
|