У меня возникли проблемы с компиляцией некоторого кода VB, который я написал для разделения строки на основе набора предопределенных разделителей (запятая, точка с запятой, двоеточие и т. Д.). Я успешно написал некоторый код, который можно загрузить в пользовательский компонент VB (я помещаю этот код в компонент VB.NET в плагин Grasshopper), и все работает отлично. Например, допустим, моя входящая строка «123,456». Когда я передаю эту строку в код VB, который я написал, я получаю новый список, в котором первое значение равно «123», а второе - «456».
Тем не менее, я пытался скомпилировать этот код в его собственный класс, чтобы я мог загрузить его в Grasshopper отдельно от стандартного компонента VB. Когда я пытаюсь скомпилировать этот код, он не разделяет строку в новый список с двумя значениями. Вместо этого я получаю сообщение «System.String []». Ребята, вы видите что-то не так в моем коде компиляции? Вы можете найти скриншот с изображением моей проблемы по следующей ссылке: нажмите, чтобы увидеть изображение
Это код VB для скомпилированного класса:
Public Class SplitString
Inherits GH_Component
Public Sub New()
MyBase.New("Split String", "Split", "Splits a string based on delimeters", "FireFly", "Serial")
End Sub
Public Overrides ReadOnly Property ComponentGuid() As System.Guid
Get
Return New Guid("3205caae-03a8-409d-8778-6b0f8971df52")
End Get
End Property
Protected Overrides ReadOnly Property Internal_Icon_24x24() As System.Drawing.Bitmap
Get
Return My.Resources.icon_splitstring
End Get
End Property
Protected Overrides Sub RegisterInputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_InputParamManager)
pManager.Register_StringParam("String", "S", "Incoming string separated by a delimeter like a comma, semi-colon, colon, or forward slash", False)
End Sub
Protected Overrides Sub RegisterOutputParams(ByVal pManager As Grasshopper.Kernel.GH_Component.GH_OutputParamManager)
pManager.Register_StringParam("Tokenized Output", "O", "Tokenized Output")
End Sub
Protected Overrides Sub SolveInstance(ByVal DA As Grasshopper.Kernel.IGH_DataAccess)
Dim myString As String
DA.GetData(0, myString)
myString = myString.Replace(",", "|")
myString = myString.Replace(":", "|")
myString = myString.Replace(";", "|")
myString = myString.Replace("/", "|")
myString = myString.Replace(")(", "|")
myString = myString.Replace("(", String.Empty)
myString = myString.Replace(")", String.Empty)
Dim parts As String() = myString.Split("|"c)
DA.SetData(0, parts)
End Sub
Конечный класс
Это пользовательский код VB, который я создал внутри Grasshopper:
Private Sub RunScript(ByVal myString As String, ByRef A As Object)
myString = myString.Replace(",", "|")
myString = myString.Replace(":", "|")
myString = myString.Replace(";", "|")
myString = myString.Replace("/", "|")
myString = myString.Replace(")(", "|")
myString = myString.Replace("(", String.Empty)
myString = myString.Replace(")", String.Empty)
Dim parts As String() = myString.Split("|"c)
A = parts
End Sub
Конечный класс