Aperçu : script#
Pour de nombreux cas d’utilisation, les possibilités fournies par la méthode éprouvée et testée Paramétrisation pour la conception de pont (CABD) sont suffisantes.
Pour les cas d’utilisation spécifiques, SOFiPLUS fournit une API de script basée sur le langage Lua.
Avertissement
Cette fonctionnalité est en préversion publique. Elle peut être modifiée ou même supprimée à tout moment.
Créer un point structurel#
Les propriétés disponibles sont :
number |
Numéro d’élément [1 …] |
position |
Coordonnées XYZ du point. |
support_pzz |
Appuis. Disponible : pxx, pyy, pzz, px, py, pz, mb |
Créer le point à la position (0,0,0) :
local spt = sofistik.Point.new({0, 0, 0})
spt.number = 1
Modifier la position ultérieurement :
spt.position = {10, 0, 0}
Assigner un appui :
spt.support_pzz = true
Utiliser une variable et une boucle pour créer plusieurs points :
local x = 10.0
local count = 20
for y=1,count do
local spt = sofistik.Point.new({ x, y, y*0.1 })
end
Créer une ligne structurelle#
Les propriétés disponibles sont :
number |
Numéro d’élément [1 …] |
group |
Numéro de groupe primaire. |
type |
Type de barre : CENTRIQUE, RÉFÉRENCE, TREILLIS, CÂBLE, SECTION, AUCUNE |
section |
Numéro de section. |
section_at_start |
Numéro de section en début. |
section_at_end |
Numéro de section en fin. |
geometry |
Modifie la géométrie de l’objet. |
length |
Longueur de la courbe. |
start_point |
|
end_point |
Créer une ligne entre deux points :
local sln = sofistik.Line.new()
sln.number = 1
area.group = 99
sln.geometry:set_line({0, 0, 0}, {1, 0, 0})
Créer une ligne structurelle comme une polyligne, c’est-à-dire reliant plusieurs points en commençant à (0,0,0) :
local sln = sofistik.Line.new()
sln.geometry
:move_to({0, 0, 0})
:line_to({1, 0, 0})
:line_to({1, 1, 0})
:line_to({2, 3, 0})
Imprimer la longueur de la ligne dans la console :
print( sln.length )
Assigner une section :
sln.section = 5
Assigner différentes sections en début et en fin avec une interpolation linéaire :
sln.section_at_start = 1
sln.section_at_end = 2
Créer une surface structurelle#
Les propriétés disponibles sont :
number |
Numéro d’élément [1 …] |
group |
Numéro de groupe primaire. |
thickness |
Épaisseur de l’élément. |
geometry |
Modifie la géométrie de l’objet. |
alignment |
Aligner le système de coordonnées sur, par exemple, un point structurel. |
Créer un rectangle avec une épaisseur de 0,2 :
local area = sofistik.Area.new()
area.number = 1
area.group = 99
area.thickness = 0.2
area.geometry:set_quad({0, 0, 0}, {1, 0, 0}, {1,1,0}, {0,1,0})
Créer une zone polygonale arbitraire :
local area = sofistik.Area.new()
area.geometry
:move_to({0, 0, 0})
:line_to({1, 0, 0})
:line_to({2, 0.5, 0})
:line_to({1, 1, 0})
:line_to({0, 1, 0})
:close()
Aligner les éléments générés :
area.align_elements = sofistik.SAR.AlignTop
area.align_elements = sofistik.SAR.AlignCenter
area.align_elements = sofistik.SAR.AlignBottom
Opérations courantes sur les éléments#
Assigner des numéros d’élément.
Assigner un numéro :
elem.number = 1
Note
Si le numéro est déjà assigné à un autre élément, le prochain numéro disponible sera utilisé.
Déplacer des objets.
Déplacer l’objet d’une distance relative de 1.0 suivant X global, 2.0 suivant Y global et -3.5 suivant Z global :
spt:move({ 1, 2, -3.5 })
CABD / pont : créer un Axe#
Les propriétés disponibles sont :
geometry |
Définir la géométrie de l’axe comme courbe 3D. |
plan_view |
Définir la géométrie de l’axe comme une combinaison d’une vue en plan et de la vue en élévation des objets géométriques. |
placements |
Modifier les placements assignés à l’axe. |
secondary |
Ajouter des axes secondaires (ex. : courbes avec décalage). |
variables |
Progression des variables le long de l’axe. Utilisé par les sections et les courbes avec décalage. |
domain |
Valeur min. et max. de station ( |
Créer un axe AXIS
en tant que ligne 3D suivant X global avec une longueur de 30.0 :
local axis = sofistik.Axis.create("AXIS")
axis.geometry:set_line({0, 0, 0}, {30, 0, 0})
Créer un axe AXIS
avec une géométrie en plan :
local axis = sofistik.Axis.create("AXIS")
axis.plan_view:line(10)
axis.plan_view:clothoid(40, 999, 100)
axis.plan_view:arc(40, 100)
Ajouter des placements.
Créer des placements dans une station spécifique :
axis.placements:create_at_s(0)
axis.placements:create_at_s(10.5)
Créer des lignes structurelles entre placements.
Créer des placements dans une station spécifique :
local axis = sofistik.Axis.create("AXIS")
axis.geometry:set_line({0, 0, 0}, {30, 0, 0})
local plc1 = axis.placements:create_at_s(0)
local plc2 = axis.placements:create_at_s(10.5)
local sln = sofistik.Line.new(gax, plc1, plc2)
sln.section = 1
Ajouter un décalage d’axe secondaire avec des distances constantes en Y et Z (local par rapport à l’axe primaire).
Note
Le nom d’un axe secondaire doit être un seul caractère majuscule de l’intervalle A-Z.
axis.secondary:create_offset("L", -4.0, 0.0)
axis.secondary:create_offset("R", 4.0, 0.0)
Ajouter un décalage d’axe secondaire avec la distance en Y
local définie par une variable H
.
Note
Disponible à partir de la version 2023.
axis.variables:create("H")
axis.secondary:create_offset("R", "H", 0.0)
Commandes, objets et géométrie#
À tout moment dans le script, il est possible d’exécuter n’importe quelle commande AutoCAD.
Note
Si une commande AutoCAD ne se termine pas correctement, l’exécution du script sera arrêtée.
Zoom sur l’étendu
acad.command[['_.zoom _e]]
Créer une ligne AutoCAD:
acad.command[[_line 0,0,0 0,5,0\n\n]]
Note
Veuillez noter que \n
indique une nouvelle ligne et représente l’appui de la touche ENTREE
en mode interactif.
La plupart des objets partagent ces propriétés :
layer |
Nom du calque AutoCAD |
print( sln.layer )
Les objets courbes partagent ces propriétés :
length |
Longueur de la courbe. |
start_point |
|
end_point |
print( sln.length )