es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

VBA VAL forzando una coma (,) en lugar de un punto (.)

Básicamente, estoy escribiendo un pequeño programa VBA de AutoCAD que lee archivos CSV para ejecutar comandos.

Primero, pongo el CSV en una matriz de cadenas (ya que también contiene caracteres). Una posición de la matriz necesito usarlo como doble para el comando (ya que lo requiere).

Pensé que esto sería una simple VAL () ya que se supone que mantiene el punto decimal independientemente de mi región.

Cualquier comentario es muy apreciado.

El CSV en cuestión está abajo:

Texto, STD, Romans.shx, 2.032, Altura y estilo de texto principal
Texto, MD, Romans.shx, 3.048,
Texto, LG, Romans.shx, 4.064,
Texto, BOM TEXT, Romans.shx, 1.5875, Texto para la lista de materiales
Texto, BOLD, Bold.shx, 5.08, “Archivo SHX personalizado de FortisBC” (Negrita)
Texto, BOLDFILL, Boldfill.shx, 5.08, “Archivo SHX de FortisBC personalizado” (Negritas con relleno)
Texto, DIM, Romans.shx, 0, “Dim utilizado en Estilo de dimensiones” “Ingeniería”
Texto, NAMEPLATE, Romans.shx, 6.35, “Usar bigfont.shx”

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para leer el archivo csv y ejecutar los comandos, puede usar el siguiente código de VBA:

    “`lang-vb
    Private Sub CommandButton2_Click()
    sfilename = “C:\Users\Patrick.Legault\OneDrive – Cima+\Projects\AutoCAD Styles\” & ComboBox1.Value & “.csv”
    Dim sLineFromFile As String
    Dim name As String
    Dim font As String
    Dim height As String
    Dim vlineItems() As String

    Open sfilename For Input As #1

    Do Until EOF(1)
    Line Input #1, sLineFromFile
    vlineItems = Split(sLineFromFile, “,”)
    Call add_textstyle(vlineItems)
    Loop

    Close #1

    End Sub

    Sub add_textstyle(vlineItems() As String)
    ”’Patrick Legault 2021-11-15
    ”’Esta rutina crea nuevos estilos de texto con su altura respectiva.

    Dim textStyle As AcadTextStyle
    Dim TextColl As AcadTextStyles
    Dim newfontstyle As String
    Dim fontpath As String
    Dim h_long As Double

    fontpath = “C:\Users\Patrick.Legault\OneDrive – Cima+\Projects\AutoCAD Styles\Fonts” ”’para cambiar

    Set TextColl = ThisDrawing.TextStyles ”’obtener los estilos de texto de este dibujo

    Set textStyle = TextColl.add(vlineItems(1)) ”’agregar el nuevo estilo de texto
    textStyle.fontFile = fontpath & “\” & (vlineItems(2)) ”’agregar el nuevo estilo de fuente al estilo de texto
    h_long = CDbl(Val(vlineItems(3))) ”’esto devuelve el valor con coma
    textStyle.height = (h_long)
    MsgBox h_long

    End Sub
    “`

    Para asegurarse de que la función Val () devuelva el valor con un punto decimal independientemente de la región, puede usar la función CDbl () para convertir el valor a un doble. Esto asegurará que el punto decimal se mantenga independientemente de la región.

Comments are closed.