Вариант 1 - добавить в конце вставки регенерацию всего.не помогает
Вариант 2 - менять параметр угла первым (то есть, например, до ширины).Попробовал, результат стал лучше, но все равно нужно обновлять.
...Еще вариант: а если попробовать добавлять блок в модель и транзакцию после назначения динпараметров?Не получится. Переместил кусок кода, в котором добавляю блок в базу и добавляю в блок атрибуты, после назначения динамических параметров, вот итог:Код - C# [Выбрать]
ms.AppendEntity(blockRef) acTrans.AddNewlyCreatedDBObject(blockRef, True)
Переделал немного блок, в таком варианте у меня работает нормально.Спасибо, но это на крайний случай. Наследство от имеющегося блока уж очень большое. :-\
Попробовал, результат стал лучше, но все равно нужно обновлять.Это по ходу глубина влияет - тогда давай попробуем устанавливать глубина->угол->ширина??
Это по ходу глубина влияет - тогда давай попробуем устанавливать глубина->угол->ширина??ШИРИНА -> глубина - >угол = Совсем плохо
Что то я схемы пока не улавливаю...Тут чутье надо - попробуй где лучше в конце еще раз угол на то-же значение установить...
Dim acBlockDynProp_vid As List(Of Object)
Select Case varRez.Value
Case 1 'Вариант 1
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
Case 2 'Вариант 2
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
Case 3 'Вариант 3
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
Case 4 'Вариант 4
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
Case 5 'Вариант 5
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
Case 6 'Вариант 6
'1
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "угол1".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(angle, Double)
Exit For
Next
'3
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "ШИРИНА".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = L1Rez.Value
Exit For
Next
'2
acBlockDynProp_vid = (From q In acBlockDynProp Where q.PropertyName.ToString.ToUpper = "глубина".ToUpper Select q).ToList
For Each i As Object In acBlockDynProp_vid
i.value = CType(Setting.b_wall, Double)
Exit For
Next
End Select
Dim grips As GripDataCollection = New GripDataCollection()
Dim updateGrip As GripDataCollection = New GripDataCollection()
Dim curViewUnitSize As Double = 0
Dim gripSize As Integer = 0
Dim curViewDir As Vector3d = acDoc.Editor.GetCurrentView().ViewDirection
Dim bitFlags As GetGripPointsFlags = GetGripPointsFlags.GripPointsOnly
blockRef.GetGripPoints(grips, curViewUnitSize, gripSize, curViewDir, bitFlags)
'Ищу грип отвечающий за поворот (в блоке задан радиус до ручка в 450 ед.)
For Each grip As GripData In grips
If blockRef.Position.DistanceTo(grip.GripPoint) = 450 Then
updateGrip.Add(grip)
Exit For
End If
Next
Изменить параметры динамического блока, можно дергая ручки, однако рассматривая свойства объекта типа GripData, не увидел там никаких ссылок на имя параметра отвечающего за эту ручку, есть ли способ узнать имя этого параметра?Нет. Через грипы ты ничего сделаешь. По большому счету всё что связано с динамическими блоками ориентировано на работу с ними пользователя, а не программиста и поэтому большая часть API для работы с динамическими блоками недоступна для программистов. Доступная часть это скорее исключение из правил.