Hola @Mecanico14
Tu pregunta me dejo intrigado sobre como poderlo hacer,y usando ilogic creo que logre algo parecido a lo que entiendo que buscas. Aunque a mi parecer sigue siendo muy rebuscado, pero igual te lo dejo por si te funciona o aporta a que se logre.
note que si insertas el simbolo haciendo referencia a un punto de una vista "draft" (no se como se llama en español), este sí se mueve al editar el draft, así que lo que hice fue que una regla de ilogic modifique la posición y tamaño de un rectangulo dibujado en una vista draft llamada "Borde" de tal forma que siempre coincida con el borde de la hoja, y así al cambiar el tamaño de hoja, se modifica el borde y se modifica el tamaño del rectángulo. Lo unico que resta es insertar el símbolo referenciandolo a un punto, como por ejemplo el punto medio del rectangulo.
Te dejo el codigo y los pasos que sigo para lograrlo:
1 - Hay que crear una vista draft y nombrarla "Borde" (sin las comillas")
2 - dentro de la vista draft, dibujar un punto en el origen (esquina inferior izquierda de la hoja) y aplicar una restricción de fijación para que no se mueva
3 - dibujar un rectángulo, este es el que va a coincidir con el borde.
4- crear las siguientes dimensiones, es muy importante que sean en este orden ya que en la regla hace referencia al nombre de la dimensión:
- punto fijo a la esquina del rectángulo de forma horizontal
- punto fijo a la esquina del rectángulo de forma vertical
- longitud horizontal del rectángulo
- longitud vertical del rectángulo
5 - finalizar el sketch y ejecutar la regla, en este punto el rectángulo debería cambiar de tamaño para coincidir exactamente con el borde
6 - una vez hecho esto, podemos insertar el símbolo haciendo referencia a las esquinas o puntos medios del rectángulo. No he probado agregando más puntos.
7- si cambias de tamaño la hoja, solo ejecutas la regla nuevamente (se podría agregar algun trigger para que se ejecute automáticamente), esto ajusta el tamaño del draft y mueve de lugar el simbolo.
Ahora mismo no tengo oportunidad de grabar el proceso para que sea más claro, pero mañana espero tenerlo. por lo pronto espero esto ayude un poco. Repito que aun no estoy del todo conforme, creo son muchos pasos, pero igual puede darte más ideas sobre como lograrlo.
Sub Main()
Dim oMinx As Integer = ThisApplication.ActiveDocument.ActiveSheet.Border.RangeBox.MinPoint.x *10
Dim oMiny As Integer = ThisApplication.ActiveDocument.ActiveSheet.Border.RangeBox.MinPoint.y *10
Dim oMaxx As Integer = ThisApplication.ActiveDocument.ActiveSheet.Border.RangeBox.MaxPoint.x *10
Dim oMaxy As Integer = ThisApplication.ActiveDocument.ActiveSheet.Border.RangeBox.MaxPoint.y *10
Call changeDraftSketchConstaintParam(1, "d0", oMinx)
Call changeDraftSketchConstaintParam(1, "d1", oMiny)
Call changeDraftSketchConstaintParam(1, "d2", oMaxx-oMinx)
Call changeDraftSketchConstaintParam(1, "d3", oMaxy-oMiny)
End Sub
Sub changeDraftSketchConstaintParam(draftIndex, paramName, newV)
Dim oDoc As DrawingDocument
oDoc = ThisApplication.ActiveDocument
Dim oSheet As Sheet
oSheet = oDoc.ActiveSheet
Dim oView As DrawingView
' oView = oSheet.DrawingViews(3)
For Each oView In oSheet.DrawingViews
If oView.Name = "Borde" Then
Dim oDraftSketch As Sketch
oDraftSketch = oView.Sketches(1)
If Not oDoc.ActivatedObject Is oDraftSketch Then
Call oDraftSketch.Edit()
End If
Dim oDim As DimensionConstraint
For Each oDim In oDraftSketch.DimensionConstraints
Dim oParam As Parameter
oParam = oDim.Parameter
If oParam.Name = paramName Then
oParam.Expression = newV
End If
Next
Call oDraftSketch.Solve()
Call oDraftSketch.ExitEdit()
End If
Next
Call oDoc.Update()
End Sub
Leonardo Alatorre Zavala
¿Te resultó útil esta publicación? No dudes en darle Me gusta a esta publicación.
¿Tu pregunta fue respondida exitosamente? Luego haga clic en el botón ACEPTAR SOLUCIÓN.
