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 (axis.domain.min, axis.domain.max)

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 )