Автоматически обрезать VLA-OBJECTS Outside Circles, ничего не выбирая

то, что я хочу сделать, это обрезать некоторые полилинии, которые сохранены как VLA-OBJECTS, нет проблем с преобразованием их в Entities, но я хочу графически обрезать свое изображение следующим образом:

введите здесь описание изображения

введите здесь описание изображения

Итак, как вы можете видеть, я хочу обрезать все синие линии за пределами красных кругов на углах, и я хочу сделать это автоматически, ничего не выбирая. Для этой цели я сохранил круг как VLA-OBJECT, синие полилинии как независимые VLA-OBJECTS, центры кругов, на самом деле все на первом изображении хранится в памяти как VLA-OBJECT. Поэтому мне было интересно, можете ли вы предложить какую-нибудь процедуру lisp, чтобы сделать это автоматически? Я думал об использовании команды Break или команды Extend, но не могу найти реального решения. Спасибо заранее.


person jportella    schedule 30.01.2017    source источник


Ответы (1)


У меня нет времени, чтобы подготовить рабочий пример кода, но я могу показать вам путь. Я бы попробовал сделать так:

Вы можете найти пересечения кругов и линий.

( vlax-invoke-method circle 'IntersectWith BlueLine acExtendNone )

разбить каждую синюю линию на это

(foreach line BlueLines 
    (command "_break" line pt pt ) ; where pt is point returned by IntersectWith 
)

и последний шаг — проверить, все ли объекты, созданные _break, находятся внутри или вне кругов.

У вас нет простого доступа к сущностям, созданным _break. чтобы получить их, вы можете использовать (entlast) перед командой _break. и (entnext) после этого.

person CAD Developer    schedule 03.02.2017