AU Class
AU Class
class - AU

Bridging the Gap: Extending AutoLISP with .NET

共享此课程
在视频、演示文稿幻灯片和讲义中搜索关键字:

说明

AutoLISP is a very powerful programming language, but it doesn't offer the same knockout punch that VB.NET/C# does when combined with the AutoCAD .NET API. This class will explore the fundamentals of VB.NET and examine how you can use it to enhance existing AutoLISP routines. During this class, you will learn how to create basic commands for AutoCAD software, and discover functions that you can use with your existing AutoLISP routines. We will show examples of how to work with AutoCAD objects, get input from the user, create a basic form, and pass values between AutoLISP and .NET, plus other general programming concepts. For this class, you should know some AutoLISP, but it will be a beginner-level class for VB.NET and the AutoCAD .NET API.

主要学习内容

  • Learn how to build and load a .NET project
  • Learn how to create a command or AutoLISP function
  • Learn about requesting user input
  • Learn how to create and display a user form

讲师

  • Lee Ambrosius
    Lee Ambrosius is a Senior Principal Content Experience Designer at Autodesk, Inc., for the AutoCAD® and AutoCAD LT products on Windows and Mac. He works primarily on the customization, developer, and CAD administration documentation along with the user documentation. Lee has presented at over 15 different Autodesk University events on a range of topics, from general AutoCAD customization to programming with the ObjectARX technology. He has authored several AutoCAD-related books, with his most recent projects being Discovering AutoCAD 2024, and AutoCAD Platform Customization: User Interface, AutoLISP, VBA, and Beyond. When Lee isn't writing, you can find him roaming various AutoCAD community forums, posting articles on his or the AutoCAD blog, or tweeting information regarding the AutoCAD product.
Video Player is loading.
Current Time 0:00
Duration 34:05
Loaded: 0.48%
Stream Type LIVE
Remaining Time 34:05
 
1x
  • Chapters
  • descriptions off, selected
  • en (Main), selected
Transcript

LEE AMBROSIUS: Hello, and welcome to "Bridging the Gap-- Extending AutoLISP with .NET." Have you ever wanted to add enhanced or advanced functionality to your existing AutoLISP programs that is normally only accessible to .NET or ObjectARX programs? Or maybe you want to implement a dialog box for your AutoLISP programs and found DCL cumbersome and lacking in functionality?

In this session, I will be discussing how you can extend the functionality of AutoLISP by defining new commands and AutoLISP functions in Managed .NET and implementing modern dialog boxes. In addition to what I know, you should know how to use AutoCAD 2022 or AutoCAD 2016 and later, and use the AutoLISP programming language. Let's get started on what I hope will be an interesting session that opens up new possibilities for extending the functionality of your existing AutoLISP programs.

Before we get started, though, let me introduce myself. My name is Lee Ambrosius, and I'm a principal learning experience designer at Autodesk. I am the lead writer for the customization, developer, and CAD administration documentation for AutoCAD on Windows and Mac OS. The developer documentation includes AutoLISP, ObjectARX, ActiveX, Managed .NET, and JavaScript.

In addition to working on the developer documentation, I am also involved in the AutoCAD "Have You Tried" article series and my "Insights for AutoCAD." I have about 25 years of experience customizing and developing applications for both AutoCAD and Windows. Over those years, I've learned about eight programming languages, with the most recent being Python. I've also written several AutoCAD books, with my most recent being the AutoCAD Customization Platform series published by Wiley & Sons. At the end of the day, I document the past and present of AutoCAD for the future.

That's me on the right, several years ago, after running 48.6 miles at Walt Disney World over four days. That's a 5K, 10K, half marathon, and full marathon. And yes, I paid Disney to run around their parks and for them to call me Dopey.

Things you should know before proceeding-- to get the most from this session, make sure you have AutoCAD 2022 installed, or AutoCAD 2016 and later. The samples are really built around AutoCAD 2022, though. Along with AutoCAD being installed, it is best to have experience with the AutoLISP programming language to get the most out of this session.

Other things you will want for this session is the handout and the additional materials. The handout takes a closer look at the topics covered in this session, while the additional materials contain a sample project that demonstrates the concepts in the presentation. After watching this session, I recommend downloading the materials from the session's page. The handout and material files can be found under the downloads.

Introduction-- by the end of the session, you should know how to build and load a .NET assembly file into AutoCAD, create a command or AutoLISP function, request user input, and create and display a user form. In addition to AutoCAD, you will need to install either Visual Studio 2019 or Visual Studio 2019 Community Edition to develop a .NET project. You will also want to install the ObjectARX SDK and the AutoCAD 2022 .NET wizard. Additionally, you'll want to refer to the AutoCAD Managed .NET Developer's Guide that is part of the AutoCAD product help.

When developing programs with .NET for AutoCAD, you need to make sure you have the correct version of the ObjectARX SDK installed and that you reference the correct .NET framework based on your target AutoCAD release. You may need to build the same program for different releases, such as once for AutoCAD 2022 and another for AutoCAD 2019. .NET for AutoCAD is not compatible with Mac OS. However, you could utilize Objective C with the ObjectARX SDK to achieve similar results.

Create a VB .NET project-- before you can create a VB .NET project, you need to install Visual Studio 2019 or Community Edition and the ObjectARX SDK, while optionally, I highly recommend installing the AutoCAD 2022 .NET wizard. Once everything has been installed, you can create a new project based on one of these templates-- VB Class Library .NET framework or AutoCAD 2022 VB plug-in. The AutoCAD 2022 VB plug-in is only available if you have installed the AutoCAD 2022 .NET wizard. While you don't need the AutoCAD 2022 .NET wizard, it does simplify the process of creating a VB .NET project by walking you through several steps.

After a project has been created, you will need to work with these three assemblies-- AcCoreMgd.dll, which allows you to define commands and AutoLISP functions and work with the drawing editor; AcDbMgd.dll, which allows you to create and modify objects in a drawing file; and AcMgd.dll, which allows you to work with the AutoCAD application and user interface. If you need to work with the AutoCAD ActiveX/COM libraries, which are commonly used with VBA, you need to also reference Autodesk.AutoCAD.Interop.dll, which allows you to work with the AutoCAD application and documents, and Autodesk.AutoCAD.Interop.Common.dll, which allows you to create and modify objects in a drawing.

.NET assemblies are divided into namespaces spaces to organize methods and properties. Common namespaces are Runtime, used for defining custom commands and AutoLISP functions; ApplicationServices, used for working with the application and opening and creating drawings; DatabaseServices, used for working with objects in a drawing; Geometry contains helper data methods for working with coordinates and other geometry-related tasks; and EditorInput, which allows you to display messages and request user input at the command prompt.

Now I'm going to switch over to Visual Studio and create a VBA .NET project that can be compiled into an assembly and then loaded into AutoCAD. With Visual Studio 2019 open, I'm going to click File, New Project. In the Create a New Project dialog box, I'm going to search for the AutoCAD plug-in. From the list, I'll select AutoCAD 2022 VB plug-in, and then click Next.

In the Configure Your New Project dialog box, I'll enter a project name of MyLISPFunctions and choose a folder to store the project. Since we're building this project for AutoCAD 2022, we can keep the default .NET framework a 4.8. I'll click Create to create the new project.

In the AutoCAD .NET wizard configurator, specify the location of the inc folder of the ObjectARX SDK and the location of the autocad.exe file as needed. Click OK to continue with creating the new project.

The new project is created and opened in Visual Studio. The Solution Explorer allows you to see which libraries have been referenced and the code files that have been created by default. The myCommands.vb file is the main file you will be adding code for this project. Notice there is some sample code in here that you can modify and try after building and loading the DLL into AutoCAD.

To find a command-- a command is defined from a public subroutine and declared with the use of the CommandMethod attribute. As part of a CommandMethod attribute, you must provide a group name, global command name, local command name, and command flags. Here's an example of a command in a group named MyGroup with a global name of HelloAU and a local name of BonjourAU. This command, when defined and started in AutoCAD, displays the message "Welcome to AU 2021."

Now I'm going to switch over to Visual Studio and define the HelloAU command. With Visual Studio open in the myCommands.vb file, I'm going to add the new command definition below the sample commands and list functions that are part of the VB .NET project that was created earlier. Now that the command definition has been added, I'm going to save the project. I explain how to build and load the .NET assembly into AutoCAD in the next section.

Build and load a .NET assembly-- a .NET project must be built into a DLL for debugging or release. You build a project for debugging when you're developing and testing your programs, while you build a project for release when you are ready to distribute the program to others for use. Click the Build menu and then choose Configuration Manager to specify either the Debug or Release build configuration. You can also use the Solution Configurations dropdown list to set the current build configuration. Once a configuration has been set, choose Build Solution from the Build menu to create a DLL from your project. Once the DLL has been built, the NETLOAD command can be used to load the DLL into AutoCAD. Here's an example, you might use to load a DLL from an AutoLISP program or file.

Now I'm going to switch over to Visual Studio and build the VB .NET project I previously created. With Visual Studio open, I'm going to choose Release from the Solution Configurations dropdown list. With the Release configuration current, I'll choose Build Solution from the Build menu.

If any errors are displayed in the error list, fix them before building the project again. You should notice the location and name of the DLL created is displayed in the output window. I'll select and copy the location and name of the DLL to simplify its loading into AutoCAD. Now with the DLL built, I'm going to switch over to AutoCAD and load it with the NETLOAD command. In AutoCAD, at the command prompt, I'm going to start the NETLOAD command and specify the location of the DLL.

With the DLL loaded, at the command prompt, I'm going to enter BonjourAU to run the custom command. Notice the message "Welcome to AU 2021" is displayed in the command window. Since this is a command, you can also use the AutoLISP command function to run the command, just like you would with the AutoCAD Line or Erase commands.

Create and expose a function-- AutoLISP functions are defined similar to custom commands. An AutoLISP function is defined from a public function and declared with the use of the LispFunction attribute. The function should accept a single result buffer data type and must always return a value of one of the two data types of a ResultBuffer or TypedValue.

Here's an example of a function named StringReturn. This function, when used, returns the string "My Value."

Before you use a value passed into a function, you should determine if it is a standard data type, a single typed value, or an array of typed values. Here's an example of an if conditional and a for each loop statement used to check the values and array of TypedValues passed into a function. A ResultBuffer in .NET is similar to a list in AutoLISP. It can contain any of the common AutoLISP data types and is used to represent lists and dotted pairs. Each item of a ResultBuffer is a TypedValue data type. The TypeCode property can be used to get the data type of the value assigned to a TypedValue, and the TypeValue property can be used to get the actual assigned value of a TypedValue.

Here is an example of assigning a dotted pair to a ResultBuffer. Now I'm going to switch over to Visual Studio and define the StringReturn function. With Visual Studio open, in the myCommands.vb file, I'm going to add the new function definition below the HelloAU command I added earlier. Now that the function definition has been added, I'm going to rebuild the project. If the DLL was previously loaded into a running instance of AutoCAD, close all instances of AutoCAD before rebuilding the DLL.

Now that the DLL has been rebuilt, I'm going to start AutoCAD and load the DLL. Then, at the command prompt, I'll enter (stringreturn). Notice the string "My Value" is returned to command window. This is the expected result. I could have assigned the return value to a user-defined variable with the SETQ function.

Access AutoLISP user-defined variables-- AutoLISP variables defined with the SETQ can be accessed with the GetLispSymbol function, which gets the value of an AutoLISP user-defined variable and the SetLispSymbol function, which allows you to assign a value to an AutoLISP user-defined variable. You can use the GetType function to determine the data type of a value returned from the GetLispSymbol function.

Here is an example of using the GetLispSymbol function to get the value assigned to the AutoLISP user-defined variable named foo. The data type of the value is then obtained using the GetType function. Now I'm going to switch over to Visual Studio and load a sample project that contains functions to get and set the value of the foo user-defined variable.

With Visual Studio open, I'm going to open one of the completed projects from the exercises in the handout for this session. Instead of building and loading a release version of the DLL into AutoCAD this time, I'm going to switch to the Debug configuration and start AutoCAD from Visual Studio. To do this, I'm going to choose Debug from the Solution Configuration dropdown list, and then display the properties of the project.

In the Project Properties dialog box, I'll click Debug to access the debug settings for this project. Here you can specify the AutoCAD executable you want to start when debugging in Visual Studio. Once the AutoCAD executable has been specified, debugging can be started by clicking Start or choosing Debug, Start Debugging. I'll start debugging from Visual Studio now.

After AutoCAD is launched, I'll load the debugged version of the DLL with the NETLOAD command. Now I can switch back to Visual Studio and add break points to debug the custom functions. I'm going to add a breakpoint to the set foo and fetch foo functions.

With breakpoints set, we're going to switch back to AutoCAD and check the value of the foo user-defined variable by entering !foo. Notice nil is returned, which is expected. Now I'll enter (setfoo) to use the SetFoo Fu function.

Notice execution is shown as being interrupted in Visual Studio. I can now step through the code using the Step Into, Step Over, and Continue tools. While execution is interrupted, I can view the current values of the variables or returned values of functions by hovering over statements in the Code Editor window or using the Watch window.

I'll resume normal execution and check the value of foo in AutoCAD. Notice foo is now set to the text string default value. Now I'll enter (fetchfoo) to use the FetchFoo function. Notice execution is shown as being interrupted in Visual Studio once again. I'll click Continue to resume normal execution. Notice in AutoCAD, at the command prompt, the value of string is returned because the data type of the foo variable is a string.

Request user input-- user input is handled with the Get method, similar to those in AutoLISP. Each Get method requires the use of a PromptOptions object, which controls the method's behavior, and a PromptResult object, which contains the return value or status of the Get method. Get methods are members of the Editor object.

Here's an example of using the Get Point method to request a point or allow the user to specify two different keywords, layer, and undo. The prompt and keywords are set up as part of the PromptPointOptions object. The PromptPointOptions object is then passed to the Get Point method. The action or value the user provides to the Get Point method is returned to the PromptPointResult object.

The biggest advantage of utilizing the Get methods from the .NET API, when compared to those of the AutoLISP programming language, is that pressing Escape doesn't terminate your program. The PromptResult object allows you to check the status of the Get method. Here's an example that shows the use of the Status property of the PromptResult object to determine what type of input the user provided or that they canceled the request for input by pressing Escape. Now I'm going to switch over to Visual Studio and load a sample project that contains a function that demonstrates the requesting of a point or keyword at the command prompt.

With Visual Studio open, I'm going to open one of the completed projects from the exercises in the handout for this session. After opening the project, I'm going to start debugging and load the Debug version of the DLL into AutoCAD. Upon loading the DLL, I'll switch back to Visual Studio and add a break point to the Point or Keyword function. With the breakpoint set, I'm going to switch back to AutoCAD and enter (pointorkeyword). When prompted, I'm going to specify a point. Notice execution is shown as being interrupted in Visual Studio after I specified a point. If I step into the code, you can see the current status is OK when I hover over the Status property.

Let me resume normal execution now. I'm going to use the function again, but this time, I'm going to press Escape instead of picking a point. Now, this time, when I step through the code, the current status is canceled. Now I'll resume normal execution. Notice upon resuming normal execution, a message box appears letting me know that the function wasn't terminated like it would have been in AutoLISP. Clicking OK resumes and ends execution of the function as expected.

Create and display a dialog box-- .NET forms in dialog boxes are simpler to create and display than those defined with DCL. You also have a greater variety of modern controls and experiences with .NET forms and dialog boxes. Forms and dialog boxes are edited using the Form Editor, and controls are added using the Toolbox. Now I'm going to switch over to Visual Studio and load a sample project that contains a user form and function that allows you to display that user form. This user form will allow for the specification of an insertion point and a note type. The note type will be used to control the text string assigned to a multi-line text object.

After opening the project, let's take a look at the user form. This user form contains a text box that shows the specified insertion point and a button to request a point in the drawing. The dropdown list allows you to specify one of the available note types. Then, along the bottom of the dialog box are the standard OK and Cancel buttons. I'm going to double click on the OK button and set a breakpoint in the function.

Notice as part of this function, a ResultBuffer is being created and assigned to a global variable. This global variable will be returned as part of our AutoLISP function when we use the dialog box. Now let's take a look at the custom AutoLISP function used to display the dialog box.

This function accepts a list of two dotted pairs, which is passed to the user form to populate the default insertion and note type. When the OK button is clicked, the values from the dialog box are returned as a list of dotted pairs. Let's start debugging and load the DLL and see the user form in action.

At the command prompt, I'm going to enter (displayinsnote) to display the user dialog box. Next, I'll specify an insertion point and note type and then click OK. Notice that I'm returned into Visual Studio in Debug mode. I'll click Continue to resume normal execution.

Notice the returned value is a list with two dotted pairs representing the insertion point and note type. Now let's take a look at using the DisplayInsNote function in a sample AutoLISP program. Here, the MyNote command uses the DisplayInsNote function to define the insertion point and text for a multi-line text object created with the Text command. Now, let's load the MyNote.lisp file and use the MyNote command. Notice a new multi-line text object is created based on the input provided from the dialog box.

Final thoughts-- this brings us to the end of our journey into looking at creating custom commands in AutoLISP of those functions with .NET. I hope you found this session interesting, and it opens up new possibilities for your existing AutoLISP programs. Extending the functionality of AutoLISP allows you to take advantage of the AutoCAD Managed .NET API and utilize modern dialog boxes and palettes. Being able to utilize multiple programming languages gives you the flexibility to use the best tool for the right job. Programing has many similarities to Wonderland in Lewis Carroll's Alice's Adventures. Both programming and Wonderland are virtually endless and full of many mysterious wonders.

If you have any questions, post a comment on the session's page or feel free to email me and I will get back to you as soon as I can. Thank you for watching this session.

______
icon-svg-close-thick

Cookie 首选项

您的隐私对我们非常重要,为您提供出色的体验是我们的责任。为了帮助自定义信息和构建应用程序,我们会收集有关您如何使用此站点的数据。

我们是否可以收集并使用您的数据?

详细了解我们使用的第三方服务以及我们的隐私声明

绝对必要 – 我们的网站正常运行并为您提供服务所必需的

通过这些 Cookie,我们可以记录您的偏好或登录信息,响应您的请求或完成购物车中物品或服务的订购。

改善您的体验 – 使我们能够为您展示与您相关的内容

通过这些 Cookie,我们可以提供增强的功能和个性化服务。可能由我们或第三方提供商进行设置,我们会利用其服务为您提供定制的信息和体验。如果您不允许使用这些 Cookie,可能会无法使用某些或全部服务。

定制您的广告 – 允许我们为您提供针对性的广告

这些 Cookie 会根据您的活动和兴趣收集有关您的数据,以便向您显示相关广告并跟踪其效果。通过收集这些数据,我们可以更有针对性地向您显示与您的兴趣相关的广告。如果您不允许使用这些 Cookie,您看到的广告将缺乏针对性。

icon-svg-close-thick

第三方服务

详细了解每个类别中我们所用的第三方服务,以及我们如何使用所收集的与您的网络活动相关的数据。

icon-svg-hide-thick

icon-svg-show-thick

绝对必要 – 我们的网站正常运行并为您提供服务所必需的

Qualtrics
我们通过 Qualtrics 借助调查或联机表单获得您的反馈。您可能会被随机选定参与某项调查,或者您可以主动向我们提供反馈。填写调查之前,我们将收集数据以更好地了解您所执行的操作。这有助于我们解决您可能遇到的问题。. Qualtrics 隐私政策
Akamai mPulse
我们通过 Akamai mPulse 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Akamai mPulse 隐私政策
Digital River
我们通过 Digital River 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Digital River 隐私政策
Dynatrace
我们通过 Dynatrace 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Dynatrace 隐私政策
Khoros
我们通过 Khoros 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Khoros 隐私政策
Launch Darkly
我们通过 Launch Darkly 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Launch Darkly 隐私政策
New Relic
我们通过 New Relic 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. New Relic 隐私政策
Salesforce Live Agent
我们通过 Salesforce Live Agent 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Salesforce Live Agent 隐私政策
Wistia
我们通过 Wistia 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Wistia 隐私政策
Tealium
我们通过 Tealium 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Tealium 隐私政策
Upsellit
我们通过 Upsellit 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Upsellit 隐私政策
CJ Affiliates
我们通过 CJ Affiliates 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. CJ Affiliates 隐私政策
Commission Factory
我们通过 Commission Factory 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Commission Factory 隐私政策
Google Analytics (Strictly Necessary)
我们通过 Google Analytics (Strictly Necessary) 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Google Analytics (Strictly Necessary) 隐私政策
Typepad Stats
我们通过 Typepad Stats 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Typepad Stats 隐私政策
Geo Targetly
我们使用 Geo Targetly 将网站访问者引导至最合适的网页并/或根据他们的位置提供量身定制的内容。 Geo Targetly 使用网站访问者的 IP 地址确定访问者设备的大致位置。 这有助于确保访问者以其(最有可能的)本地语言浏览内容。Geo Targetly 隐私政策
SpeedCurve
我们使用 SpeedCurve 来监控和衡量您的网站体验的性能,具体因素为网页加载时间以及后续元素(如图像、脚本和文本)的响应能力。SpeedCurve 隐私政策
Qualified
Qualified is the Autodesk Live Chat agent platform. This platform provides services to allow our customers to communicate in real-time with Autodesk support. We may collect unique ID for specific browser sessions during a chat. Qualified Privacy Policy

icon-svg-hide-thick

icon-svg-show-thick

改善您的体验 – 使我们能够为您展示与您相关的内容

Google Optimize
我们通过 Google Optimize 测试站点上的新功能并自定义您对这些功能的体验。为此,我们将收集与您在站点中的活动相关的数据。此数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID 等。根据功能测试,您可能会体验不同版本的站点;或者,根据访问者属性,您可能会查看个性化内容。. Google Optimize 隐私政策
ClickTale
我们通过 ClickTale 更好地了解您可能会在站点的哪些方面遇到困难。我们通过会话记录来帮助了解您与站点的交互方式,包括页面上的各种元素。将隐藏可能会识别个人身份的信息,而不会收集此信息。. ClickTale 隐私政策
OneSignal
我们通过 OneSignal 在 OneSignal 提供支持的站点上投放数字广告。根据 OneSignal 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 OneSignal 收集的与您相关的数据相整合。我们利用发送给 OneSignal 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. OneSignal 隐私政策
Optimizely
我们通过 Optimizely 测试站点上的新功能并自定义您对这些功能的体验。为此,我们将收集与您在站点中的活动相关的数据。此数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID 等。根据功能测试,您可能会体验不同版本的站点;或者,根据访问者属性,您可能会查看个性化内容。. Optimizely 隐私政策
Amplitude
我们通过 Amplitude 测试站点上的新功能并自定义您对这些功能的体验。为此,我们将收集与您在站点中的活动相关的数据。此数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID 等。根据功能测试,您可能会体验不同版本的站点;或者,根据访问者属性,您可能会查看个性化内容。. Amplitude 隐私政策
Snowplow
我们通过 Snowplow 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Snowplow 隐私政策
UserVoice
我们通过 UserVoice 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. UserVoice 隐私政策
Clearbit
Clearbit 允许实时数据扩充,为客户提供个性化且相关的体验。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。Clearbit 隐私政策
YouTube
YouTube 是一个视频共享平台,允许用户在我们的网站上查看和共享嵌入视频。YouTube 提供关于视频性能的观看指标。 YouTube 隐私政策

icon-svg-hide-thick

icon-svg-show-thick

定制您的广告 – 允许我们为您提供针对性的广告

Adobe Analytics
我们通过 Adobe Analytics 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Adobe Analytics 隐私政策
Google Analytics (Web Analytics)
我们通过 Google Analytics (Web Analytics) 收集与您在我们站点中的活动相关的数据。这可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。我们使用此数据来衡量我们站点的性能并评估联机体验的难易程度,以便我们改进相关功能。此外,我们还将使用高级分析方法来优化电子邮件体验、客户支持体验和销售体验。. Google Analytics (Web Analytics) 隐私政策
AdWords
我们通过 AdWords 在 AdWords 提供支持的站点上投放数字广告。根据 AdWords 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 AdWords 收集的与您相关的数据相整合。我们利用发送给 AdWords 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. AdWords 隐私政策
Marketo
我们通过 Marketo 更及时地向您发送相关电子邮件内容。为此,我们收集与以下各项相关的数据:您的网络活动,您对我们所发送电子邮件的响应。收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、电子邮件打开率、单击的链接等。我们可能会将此数据与从其他信息源收集的数据相整合,以根据高级分析处理方法向您提供改进的销售体验或客户服务体验以及更相关的内容。. Marketo 隐私政策
Doubleclick
我们通过 Doubleclick 在 Doubleclick 提供支持的站点上投放数字广告。根据 Doubleclick 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Doubleclick 收集的与您相关的数据相整合。我们利用发送给 Doubleclick 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Doubleclick 隐私政策
HubSpot
我们通过 HubSpot 更及时地向您发送相关电子邮件内容。为此,我们收集与以下各项相关的数据:您的网络活动,您对我们所发送电子邮件的响应。收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、电子邮件打开率、单击的链接等。. HubSpot 隐私政策
Twitter
我们通过 Twitter 在 Twitter 提供支持的站点上投放数字广告。根据 Twitter 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Twitter 收集的与您相关的数据相整合。我们利用发送给 Twitter 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Twitter 隐私政策
Facebook
我们通过 Facebook 在 Facebook 提供支持的站点上投放数字广告。根据 Facebook 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Facebook 收集的与您相关的数据相整合。我们利用发送给 Facebook 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Facebook 隐私政策
LinkedIn
我们通过 LinkedIn 在 LinkedIn 提供支持的站点上投放数字广告。根据 LinkedIn 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 LinkedIn 收集的与您相关的数据相整合。我们利用发送给 LinkedIn 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. LinkedIn 隐私政策
Yahoo! Japan
我们通过 Yahoo! Japan 在 Yahoo! Japan 提供支持的站点上投放数字广告。根据 Yahoo! Japan 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Yahoo! Japan 收集的与您相关的数据相整合。我们利用发送给 Yahoo! Japan 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Yahoo! Japan 隐私政策
Naver
我们通过 Naver 在 Naver 提供支持的站点上投放数字广告。根据 Naver 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Naver 收集的与您相关的数据相整合。我们利用发送给 Naver 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Naver 隐私政策
Quantcast
我们通过 Quantcast 在 Quantcast 提供支持的站点上投放数字广告。根据 Quantcast 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Quantcast 收集的与您相关的数据相整合。我们利用发送给 Quantcast 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Quantcast 隐私政策
Call Tracking
我们通过 Call Tracking 为推广活动提供专属的电话号码。从而,使您可以更快地联系我们的支持人员并帮助我们更精确地评估我们的表现。我们可能会通过提供的电话号码收集与您在站点中的活动相关的数据。. Call Tracking 隐私政策
Wunderkind
我们通过 Wunderkind 在 Wunderkind 提供支持的站点上投放数字广告。根据 Wunderkind 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Wunderkind 收集的与您相关的数据相整合。我们利用发送给 Wunderkind 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Wunderkind 隐私政策
ADC Media
我们通过 ADC Media 在 ADC Media 提供支持的站点上投放数字广告。根据 ADC Media 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 ADC Media 收集的与您相关的数据相整合。我们利用发送给 ADC Media 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. ADC Media 隐私政策
AgrantSEM
我们通过 AgrantSEM 在 AgrantSEM 提供支持的站点上投放数字广告。根据 AgrantSEM 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 AgrantSEM 收集的与您相关的数据相整合。我们利用发送给 AgrantSEM 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. AgrantSEM 隐私政策
Bidtellect
我们通过 Bidtellect 在 Bidtellect 提供支持的站点上投放数字广告。根据 Bidtellect 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Bidtellect 收集的与您相关的数据相整合。我们利用发送给 Bidtellect 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Bidtellect 隐私政策
Bing
我们通过 Bing 在 Bing 提供支持的站点上投放数字广告。根据 Bing 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Bing 收集的与您相关的数据相整合。我们利用发送给 Bing 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Bing 隐私政策
G2Crowd
我们通过 G2Crowd 在 G2Crowd 提供支持的站点上投放数字广告。根据 G2Crowd 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 G2Crowd 收集的与您相关的数据相整合。我们利用发送给 G2Crowd 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. G2Crowd 隐私政策
NMPI Display
我们通过 NMPI Display 在 NMPI Display 提供支持的站点上投放数字广告。根据 NMPI Display 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 NMPI Display 收集的与您相关的数据相整合。我们利用发送给 NMPI Display 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. NMPI Display 隐私政策
VK
我们通过 VK 在 VK 提供支持的站点上投放数字广告。根据 VK 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 VK 收集的与您相关的数据相整合。我们利用发送给 VK 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. VK 隐私政策
Adobe Target
我们通过 Adobe Target 测试站点上的新功能并自定义您对这些功能的体验。为此,我们将收集与您在站点中的活动相关的数据。此数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID、您的 Autodesk ID 等。根据功能测试,您可能会体验不同版本的站点;或者,根据访问者属性,您可能会查看个性化内容。. Adobe Target 隐私政策
Google Analytics (Advertising)
我们通过 Google Analytics (Advertising) 在 Google Analytics (Advertising) 提供支持的站点上投放数字广告。根据 Google Analytics (Advertising) 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Google Analytics (Advertising) 收集的与您相关的数据相整合。我们利用发送给 Google Analytics (Advertising) 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Google Analytics (Advertising) 隐私政策
Trendkite
我们通过 Trendkite 在 Trendkite 提供支持的站点上投放数字广告。根据 Trendkite 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Trendkite 收集的与您相关的数据相整合。我们利用发送给 Trendkite 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Trendkite 隐私政策
Hotjar
我们通过 Hotjar 在 Hotjar 提供支持的站点上投放数字广告。根据 Hotjar 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Hotjar 收集的与您相关的数据相整合。我们利用发送给 Hotjar 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Hotjar 隐私政策
6 Sense
我们通过 6 Sense 在 6 Sense 提供支持的站点上投放数字广告。根据 6 Sense 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 6 Sense 收集的与您相关的数据相整合。我们利用发送给 6 Sense 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. 6 Sense 隐私政策
Terminus
我们通过 Terminus 在 Terminus 提供支持的站点上投放数字广告。根据 Terminus 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 Terminus 收集的与您相关的数据相整合。我们利用发送给 Terminus 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. Terminus 隐私政策
StackAdapt
我们通过 StackAdapt 在 StackAdapt 提供支持的站点上投放数字广告。根据 StackAdapt 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 StackAdapt 收集的与您相关的数据相整合。我们利用发送给 StackAdapt 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. StackAdapt 隐私政策
The Trade Desk
我们通过 The Trade Desk 在 The Trade Desk 提供支持的站点上投放数字广告。根据 The Trade Desk 数据以及我们收集的与您在站点中的活动相关的数据,有针对性地提供广告。我们收集的数据可能包含您访问的页面、您启动的试用版、您播放的视频、您购买的东西、您的 IP 地址或设备 ID。可能会将此信息与 The Trade Desk 收集的与您相关的数据相整合。我们利用发送给 The Trade Desk 的数据为您提供更具个性化的数字广告体验并向您展现相关性更强的广告。. The Trade Desk 隐私政策
RollWorks
We use RollWorks to deploy digital advertising on sites supported by RollWorks. Ads are based on both RollWorks data and behavioral data that we collect while you’re on our sites. The data we collect may include pages you’ve visited, trials you’ve initiated, videos you’ve played, purchases you’ve made, and your IP address or device ID. This information may be combined with data that RollWorks has collected from you. We use the data that we provide to RollWorks to better customize your digital advertising experience and present you with more relevant ads. RollWorks Privacy Policy

是否确定要简化联机体验?

我们希望您能够从我们这里获得良好体验。对于上一屏幕中的类别,如果选择“是”,我们将收集并使用您的数据以自定义您的体验并为您构建更好的应用程序。您可以访问我们的“隐私声明”,根据需要更改您的设置。

个性化您的体验,选择由您来做。

我们重视隐私权。我们收集的数据可以帮助我们了解您对我们产品的使用情况、您可能感兴趣的信息以及我们可以在哪些方面做出改善以使您与 Autodesk 的沟通更为顺畅。

我们是否可以收集并使用您的数据,从而为您打造个性化的体验?

通过管理您在此站点的隐私设置来了解个性化体验的好处,或访问我们的隐私声明详细了解您的可用选项。